2009-11-09 88 views
0

我有网站,用户很多ajax(jquery)。现在,如果用户因任何原因超时(走了大约30分钟或某事)。在接下来的操作中,我希望它们返回到登录页面。如何在超时后将用户重定向到登出页面? Asp.net MVC

我在webconfig(returnUrl和timeout)中设置了一切,如果他们尝试去一个页面,他们没有权限去他们得到发送到登录页面。

但是,我的控制器中用于Ajax请求的方法上有授权标记。因此,如果用户超时,他们不再通过身份验证,但他们可能会在登录后离开所需的身份验证。

现在,他们可以去尝试在这一点上保存一些东西,这会做一个Ajax请求。授权标记将阻止他们这样做,因为他们将失败授权并返回url将踢入。

但是,尽管返回网址似乎被发回给他们,但他们没有被重定向到登录页面。所以我猜,因为所有这些东西都是Ajax这就是为什么它不能正常工作。那么,我能解决这个问题吗?

回答

1

您需要检查403响应的Ajax错误

+0

我没有收到“403”错误。我回到200 OK。 – chobo2 2009-11-09 19:26:43

+0

实际上,好像我得到了200 OK,但是如果我设置了一个Jquery Ajax.Error,它会转到错误方法。但不知道如何检查它是否是403错误。 – chobo2 2009-11-09 20:32:22

+0

此外,如果这将工作,这只会解决一半的问题。由于我有ajax选项卡,如果身份验证失败,会发生什么情况。它将登录页面加载到选项卡中。 – chobo2 2009-11-09 20:33:47

1

使用setTimeout每30秒运行一次客户端函数,如果会话超时,应通过AJAX询问服务器。如果有,客户端代码可以抛出任何登录cookie并重定向到登录页面。

您可以将登录url硬编码到客户端代码中,也可以让服务器处理程序从web.config中返回值,如果它需要超时。

这仍然会导致用户可能会在用户实际超时和客户端代码请求检查之间的0-30秒内尝试一些内容。为了防止出现这种情况,请让服务器返回会话中剩余的时间量,这样您的客户端代码可以决定是要早一点再检查一次,还是在服务器端执行客户端重定向宕机时间。

+0

您能否给我写一个简短的相同代码。我不知道如何让它在30秒内运行,也不知道setTimeout是什么。这是一个jQuery的功能? javscript函数? – chobo2 2009-11-09 02:37:37

+1

Hi Chobo,Rasik again ....以下是我的朋友和同事写的自动登出示例代码的链接...看看它吧...... http://www.firozansari.com/ 2009/05/15/Implement-auto-logout-functionality/ – 2009-11-09 02:41:58

+0

如果使用它的人不止一个,这可能会导致服务器瘫痪。 – 2009-11-09 13:59:10

相关问题