ASP.NET角色身份验证因会话而中断

时间:2014-03-07 19:26:20

标签: asp.net session authentication cookies .aspxauth

在内部门户网站上工作,我们需要存储用户的某些内容,因此我们创建了自己的WebUser / WebUserStore,但我遇到了一个奇怪的问题,我希望有人会遇到这个问题。

作为ASP,它遍布了很多代码,所以我不打算在这里粘贴它。但问题出在这里:

  • 任意数量的用户都可以登录主屏幕。

  • 如果任何用户导航到进行任何会话调用的页面(或者 设置或Session.Remove())然后没有更多的用户可以登录,登录 页面只是闪烁,你回到了登录界面。

  • 当一个用户触发会话时登录的任何用户仍然可以注销和进出,只要他们仍然拥有ASP.NET_SessionId cookie。

    < / LI>
  • 如果删除了ASP.NET_SessionId cookie,那么该用户也会卡在登录屏幕上。

Hacky修复可能有助于查明问题(每个问题都可以解决问题):

  • 在IIS中回收应用程序池会重置它,以便每个人都可以重新登录。**

  • 设置以下内容(但是你得到了令人讨厌的网址):

<sessionState mode="InProc" cookieless="UseUri" />

  • 在调用IdentityHelper.SignIn(...)之前添加此权限。

    会话[“ANYKEY!”] = false;

  • 只需将此空事件添加到global.asax.cs

    即可
    void Session_Start(object sender, EventArgs e)
    {
    }
    

这也是基于每个浏览器的。因此,在具有3种不同浏览器的一台计算机上,您只需使用1个用户即可复制该问题。一旦您在一个浏览器中触发会话调用,其他浏览器如果未登录(并且具有ASP.NET_SessionId cookie)现在已被锁定。

单步执行登录过程并没有泄露任何内容,一切正常并且一直通过authenticationManager.SignIn(...)触发任何看起来很好但是神秘地没有经过身份验证并返回到登录屏幕?

任何人都可以想到什么是错的,所以一旦我触摸会话,所有用户都无法登录,只有那些已经拥有会话cookie的用户才能继续登录和退出?

0 个答案:

没有答案