[英]ASP.net forms auth and timing out
我有一个简单的小问题,但是以下内容将详细说明该问题。
我有一个使用表单身份验证的MVC 4应用程序。 我使用浏览器会话cookie进行设置,以便他们可以在需要的时间内使用该网站,但是,一旦他们关闭浏览器,它实际上就将其注销。
现在,我以空闲计时器的形式添加了一层额外的安全保护,因此,如果它们空闲了5分钟(例如5分钟),则会向服务器发送ajax请求以删除表单auth令牌,并返回一个过期的会话。视图,并将此会话过期视图显示为模式对话框。
该对话框具有一个显示用户名的标签和一个密码输入字段,以便他们可以重新输入密码。
这意味着,如果任何人打开另一个会话,他们将在没有人登录的情况下进入登录屏幕,并且如果他们只是刷新当前屏幕,也会发生同样的情况。 但这也意味着,如果用户在超时屏幕上输入密码,则该对话框将ajax请求发送到服务器以再次登录,然后仅删除该对话框。
所有这些(大多数情况下)都能正常运行,并且它们将与以前在同一屏幕上显示,并且它们也将像以前一样填充所有内容,例如,如果它们正在填充大型表格等。
问题是 ,如果他们在浏览器中打开了2个不同的选项卡,则第一个超时,显示超时屏幕,并按预期显示其名称和密码输入框,但是在第2个浏览器选项卡发出时间要求时,屏幕转到mvc方法,找不到登录的用户,因为在第一个超时请求被注销时,没有人登录。 我如何解决这个问题? 有没有简单的解决方案? 还是有更好的设计来实现这一目标?
我见过活的网站这个问题,它真的很烦人。 它强制用户仅打开一个选项卡,以避免注销。
您可以通过在超时达到时不注销用户但仅删除会话cookie来解决问题吗? 这样,用户仍将在空闲选项卡上看到超时屏幕,但仍可以使用其他选项卡。 仍然可能带来不便,但是我认为如果您确实想要该超时屏幕,则可能是这样做的方法。 除非您想使用WebSockets或类似的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.