我的控制器上有自定义授权属性,并且没有在过期的ajax请求上调用它。 我正在使用表单身份验证,并通过$ .ajax(jQuery)调用控制器方法。 ajax请求返回我的登录页面,我似乎无法拦截它。
谢谢。
更新: 我想出了原因:我在web.config中注释了授权部分,如下所示:
<authentication mode="Forms">
<forms loginUrl="/Login" timeout="1" slidingExpiration="false"/>
</authentication>
<!--<authorization>
<deny users="?"/>
</authorization>-->
现在我的授权过滤器即使在过期后也会被调用。事实证明,Web.config授权规则优先于授权过滤器。
答案 0 :(得分:4)
不要将401返回。 ASP.NET拦截并重定向到web.config中定义的登录页面。对于AJAX,而是返回其他内容,例如403。
答案 1 :(得分:1)
答案 2 :(得分:0)
使用context.HttpContext.Request.IsAjaxRequest()
检测请求是否是Ajax请求。
点击此处查看更多信息: