用户会话到期时处理Ajax调用

时间:2016-08-16 20:06:26

标签: ajax session authentication asp.net-mvc-5

在我的MVC 5 Web应用程序中,当用户会话到期并且用户点击进行AJAX调用的页面中的某些内容时,我仍然会收到带有X-Responded-JSON的响应状态200:401。

然后我阅读并调查并找到了解决问题的方法。

所以......添加到启动 ConfigureAuth 方法

DS3

只是一个帮手...

DS4

这解决了我在本地的问题(在我的开发机器中),我现在能够在会话过期或用户登录时或者仍在尝试访问打开的选项卡中的某些内容时看到Ajax调用中的401。

我的问题是这项工作仅本地。当我在服务器中运行我的应用程序时,这个Ajax调用仍然返回200并且我不明白为什么......但是如果我访问应用程序内部,一切正常正如预期的那样,我可以在浏览器中看到401

有人可能知道更好的解决方案,或者为什么这可以在本地工作但不在服务器中?

非常感谢

1 个答案:

答案 0 :(得分:0)

在初始问题中发布的解决方案按预期工作。由于您可以在 web.config 中定义自定义错误页,因此这种方法在开始时无效。它弄乱了我在网络上找到的初始解决方案。

<system.web>
    <globalization enableClientBasedCulture="true" culture="en-GB" uiCulture="auto" />
    <customErrors mode="Off" defaultRedirect="~/Error/Index">
      <error statusCode="400" redirect="~/Error/Index" />
      <error statusCode="401" redirect="~/Error/Index" />
...
...

这是重定向到另一个页面,因此返回 200 而不是 401

由于