Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 超时时如何将用户重定向回注销页面?Asp.NETMVC_C#_.net_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 超时时如何将用户重定向回注销页面?Asp.NETMVC

C# 超时时如何将用户重定向回注销页面?Asp.NETMVC,c#,.net,asp.net,asp.net-mvc,C#,.net,Asp.net,Asp.net Mvc,我有一个使用大量ajax(jquery)的网站。现在,如果用户出于任何原因超时(走动30分钟或其他)。在接下来的操作中,我希望它们返回到登录页面 我在webconfig中设置了所有内容(returnUrl和timeout),如果他们试图转到某个页面,他们没有要转到的前置任务,就会被发送到登录页面 但是,我在控制器中用于ajax请求的方法上有authorize标记。因此,如果用户超时,他们将不再进行身份验证,但他们可能正在进行所需的身份验证,因为他们已登录并离开 现在,他们可以尝试保存一些可以执行

我有一个使用大量ajax(jquery)的网站。现在,如果用户出于任何原因超时(走动30分钟或其他)。在接下来的操作中,我希望它们返回到登录页面

我在webconfig中设置了所有内容(returnUrl和timeout),如果他们试图转到某个页面,他们没有要转到的前置任务,就会被发送到登录页面

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

现在,他们可以尝试保存一些可以执行ajax请求的内容。authorize标签将阻止他们这样做,因为他们将无法通过授权,返回的url将生效


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

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

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


这仍然允许用户在用户实际超时和客户端代码执行其检查请求之间的0-30秒内尝试某些操作。为了防止出现这种情况,请让服务器发回会话中剩余的时间,这样您的客户端代码就可以做出决定,要么更快地重新检查,要么在服务器端死机时间之前执行客户端重定向。

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

您能给我写一个简短的相同代码吗。我不知道如何让它运行30秒,也不知道setTimeout是什么。这是jquery函数吗?javscript函数?嗨,乔波,拉西克又来了…这是我的朋友和同事写的关于自动注销的示例代码的链接。。。看一看。。。。如果有超过几个人在使用服务器,这可能会影响服务器。Rasik Jain提供的链接很好,但值得注意的是,它假设客户端在强制注销时具有权威性。如果服务器需要具有权威性,那么如果客户端和服务器不一致,仍然可能存在问题。当然,在服务器端,您可以(也应该)在执行客户端操作之前检查登录是否仍然有效。我不确定客户机和服务器怎么会不同意,即使他们不同意,我也会接受服务器说的任何话,因为它每次点击服务器时都会检查用户凭据。那么你能更详细地解释一下你的意思吗?谢谢。事实上,我好像得到了200 OK,但是如果我设置了Jquery Ajax.Error,它会转到Error方法。但不确定如何检查它是否是403错误。而且,如果这可以工作,这只能解决一半的问题。因为我有ajax选项卡,如果身份验证失败,会发生什么。它将登录页面加载到选项卡中。