.NET应用程序需要多次auth,并在首次登录后将加密的字符串放入URL中

时间:2013-10-21 17:39:24

标签: c# .net webforms forms-authentication

我有两个.NET应用程序,它们有多次需要身份验证的奇怪行为,但每页请求只有一次。所以我会登录,它会带我到看起来像我成功登录的页面,然后当我点击另一个菜单选项时,它会要求我再次登录。有时我点击的每一个不同页面都会要求我登录,但在这样做后我可以访问该页面。如果它没有做那种行为,那么在一段随机时间后它会要求我再次登录。

我还注意到加密数据存储在URL中。

  • 第1步:进入网站,登录,一切正常。
  • 第2步:点击应用内的菜单链接,它会转到如下所示的网址:
  

https://www.mydomain.com/myapp/(X(1)S(hr4zvojplikcza2osx4i5ksk))/SomePage.aspx

  • 第3步:点击该链接,它需要我再次登录,现在所有网址都包含奇怪的字符串。如果我第二次登录,那个奇怪的字符串会变得更长。

如果我只输入没有(X(1)S(hr4zvojplikcza2osx4i5ksk)的页面URL),它工作正常,不需要我再次登录。但应用程序根目录中应用程序中的每个链接都以该字符串为前缀。如果我重新启动应用程序池,这个问题也会消失,但是在以后的某个时间,它会再次出现问题。

应用使用表单身份验证。发生了什么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用加密的URL代替Authentication Cookie。在web.config中启用Cookieless时会发生这种情况。

您可以在此处找到更多信息:MSDN Cookieless Sessions。在这里:MSDN Authentication。将Cookieless更改为UseCookies。

    <authentication mode="Forms">
     <forms loginUrl="member_login.aspx"
      cookieless="UseCookies"
      name=".ASPXFORMSAUTH" />
    </authentication>