在MVC窗体身份验证中处理未经身份验证的ajax请求
本文关键字:身份验证 ajax 请求 处理 MVC 窗体 | 更新日期: 2023-09-27 17:57:44
我有一个带有Forms Authentication的MVC 4.0网站,正在尝试处理Authentication超时。具体来说,我需要在超时后以不同于常规请求的方式处理ajax
请求,因为如果留给MVC自己的设备,MVC的Forms Authentication系统将向登录页面发送302 Found
(Redirect
),作为对ajax
请求的响应。。。这以ajax调用接收200 Success
HttpStatusCode结束,而这显然不是我想要发送的!
如何处理未经身份验证的ajax
请求?
当然,扩展AuthorizeAttribute
并不是解决问题的办法,因为只有在身份验证之后才能进行授权。在这种情况下永远不会调用HandleUnauthorizedRequest
(与问题中的不同答案相反)
我可以拦截global.asax
中的每个请求并在那里进行检查。。。但这似乎是错误的做法。
我的web.config中的授权设置如下:
<authentication mode="Forms">
<forms loginUrl="Login"
protection="All"
timeout="60"
name=".ASPXAUTH"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="Main"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<sessionState mode="InProc" timeout="60"></sessionState>
因此,我最终所做的是允许web.config中的所有用户:
<authorization>
<allow users="*" />
</authorization>
然后在我自己的代码中检查用户是否通过了身份验证
但肯定有更好的方法,不是吗?