繁体   English   中英

超时后,如何将用户重定向回退出页面? Asp.net MVC

[英]How can I redirect a user back to signout page when timed out? Asp.net MVC

我有一个站点,用户使用很多ajax(jquery)。 现在,如果用户因任何原因超时(走了30分钟左右)。 接下来,我希望将它们返回到登录页面。

我在webconfig中设置了所有内容(returnUrl和超时),如果他们尝试转到某个页面,则没有权限去将它们发送到登录页面。

但是我在用于ajax请求的控制器中的方法上具有authorize标签。 因此,如果用户超时,则不再对他们进行身份验证,但是由于他们登录并离开后,他们可能正在进行所需的身份验证。

现在他们可以去尝试保存可以执行ajax请求的内容。 authorize标记将阻止他们执行此操作,因为它们将使授权失败并返回URL。

但是,即使返回URL似乎已发送回给他们,它们也不会重定向到登录页面。 所以我猜因为所有这些东西都是ajax,这就是为什么它无法正常工作的原因。 那我能解决这个问题吗?

使用setTimeout每30秒运行一次客户端功能,该功能应通过AJAX向服务器询问会话是否已超时。 如果有的话,客户端代码可以扔掉任何登录cookie并重定向到登录页面。

您可以将登录URL硬编码为客户端代码,或者让服务器处理程序在需要超时的情况下从web.config返回该值。

这仍然使用户有可能在用户实际超时和客户端代码执行其检查请求之间的0-30秒内尝试尝试某些操作。 为了防止这种情况,请让服务器发回会话中剩余的时间,这样,您的客户端代码就可以做出决定,以便更早再次检查,或者在服务器端之前进行客户端重定向停滞时间。

您需要检查Ajax错误以获取403响应

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM