0

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

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

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

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

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

如果我只输入没有 (X(1)S(hr4zvojplikcza2osx4i5ksk)) 的页面 URL,它可以正常工作并且不需要我再次登录。但是应用程序根目录之外的每个应用程序链接都以该字符串开头。如果我重新启动应用程序池,这个问题也会消失,但在稍后的随机时间,它会再次抬头。

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

4

1 回答 1

0

使用加密的 url 代替身份验证 Cookie。在您的 web.config 中启用 Cookieless 时会发生这种情况。

您可以在此处了解更多信息:MSDN 无 Cookie 会话。在这里:MSDN Authentication。将 Cookieless 更改为 UseCookies。

    <authentication mode="Forms">
     <forms loginUrl="member_login.aspx"
      cookieless="UseCookies"
      name=".ASPXFORMSAUTH" />
    </authentication>
于 2013-11-22T15:07:41.527 回答