自定义授权属性不适用于过期的ajax请求

时间:2009-10-29 14:30:23

标签: jquery asp.net-mvc ajax forms-authentication

我的控制器上有自定义授权属性,并且没有在过期的ajax请求上调用它。 我正在使用表单身份验证,并通过$ .ajax(jQuery)调用控制器方法。 ajax请求返回我的登录页面,我似乎无法拦截它。

谢谢。

更新: 我想出了原因:我在web.config中注释了授权部分,如下所示:

  <authentication mode="Forms">
      <forms loginUrl="/Login" timeout="1" slidingExpiration="false"/>
    </authentication>
    <!--<authorization>
      <deny users="?"/>
    </authorization>-->

现在我的授权过滤器即使在过期后也会被调用。事实证明,Web.config授权规则优先于授权过滤器。

3 个答案:

答案 0 :(得分:4)

不要将401返回。 ASP.NET拦截并重定向到web.config中定义的登录页面。对于AJAX,而是返回其他内容,例如403。

答案 1 :(得分:1)

答案 2 :(得分:0)

使用context.HttpContext.Request.IsAjaxRequest()检测请求是否是Ajax请求。 点击此处查看更多信息:

Authorize attribute and jquery AJAX in asp.net MVC

相关问题