我遇到一个问题,当用户在我的网站上超时时,他们仍然登录。所以他们仍然可以执行ajax请求。如果他们在我的网站上做了一个ajax请求,我的asp.net mvc授权标签就会停止这个。
如果授权失败,则授权通常会将用户重定向回登录页面。
现在因为这是一个ajax请求,似乎正在发生的是它将整个页面重新呈现为html。因此,用户永远不会重定向,因为我只是将整个页面作为html发送给我。
然而,firebug在控制台中说:
http://localhost:3668/Account/signIn?ReturnUrl="return
“(这不在网络浏览器的实际网址栏中,所以我不能去那里得到它。我似乎只能通过萤火虫看到它。)
所以我不确定,但也许我可以以某种方式从我的errorCallback区域内抓取这个网址,这将是很棒的。
由于我的测试没有发回错误代码(发送200 OK)。相反,我只是得到解析错误(因此调用errorCallback的原因)但我不能假设每次我得到解析错误都意味着用户超时。
我需要更好的东西。唯一的另一个选择是查看响应并查找关键作品,看看是否是登录页面,我认为这不是很好的做法。
答案 0 :(得分:2)
您可能想要做以下两件事之一:
另外,您还可以在网页上设置一个计时器,用于计算会话即将结束的时间,以及警告用户,并提供一条消息,让他们续订会话。一旦超时,将页面空白并为其提供再次登录的链接。
答案 1 :(得分:1)
如何在登录页面中添加脚本
if(document.location.href != "/Account/Login")
{
document.location.href = "/Account/Login"
}
如果您尝试在ajax请求中渲染部分,这将有效。 (如果你期待json,那就没有了)
答案 2 :(得分:0)
答案 3 :(得分:0)
这不是您具体问题的答案,但我处理此问题的方法是让一些client-side code了解会话长度并提示用户在会话之前续订会话如果他们没有离开页面就准备好了。如果用户没有及时响应提示,则会调用该站点的注销操作 - 将用户带到登录页面。
您可以在我的博客上找到有关确切实施的更多信息,包括一些代码:http://farm-fresh-code.blogspot.com。