我正在使用
在MVC中创建表单身份验证`FormsAuthentication.SetAuthCookie(userName, model.RememberMe);`
在Controller中,我们使用[Authorized]属性来确保用户会话有效且未过期。当用户从一个页面移动到另一个页面时,它很有效。如果Cookie已过期,则会再次显示“登录”页面。
问题出在一个页面(仪表板)上,它使Ajax调用服务器(Controller)每分钟刷新屏幕上的一些项目。
根据公司政策,我们的会议时间不得超过30分钟。因此,如果此页面保持打开状态30分钟且会话过期,我们希望重定向到“登录”页面。 目前,如果会话过期,此页面仍然保持不变,但停止刷新,然后用户抱怨他们无法查看数据。当然,一旦他们刷新页面,他们就可以再次看到它,但有任何方法可以使用我可以使用的FormAuthentication cookie已过期的JQuery或Java Script找到它
答案 0 :(得分:1)
当然,一旦刷新页面,他们就可以再次看到它,但是 有什么办法可以使用JQuery或Java Script找到它 FormsAuthentication cookie已过期
是的,你可以。 Phil Haack写了一篇非常好的博客文章,解释了如何阻止表单身份验证模块简单地重定向到登录页面,而是返回一个401状态代码,客户端AJAX调用可能会捕获并使用window.location.href
手动重定向到登录页面。
他还写了一个名为AspNetHaack
的NuGet,你可以使用它,如果你有兴趣浏览这里的源代码:https://github.com/Haacked/CodeHaacks/tree/master/src/AspNetHaack