我的 ASP MVC (1.0) 网站有一个默认登录页面(基于 OpenId - 但这不应该有什么不同)。当 AuthorizedAttribute 位于操作/控制器上时,它可以正常工作。
不过,我也收到了 AJAX 请求。以下是我对它们所做的事情:
if (Request.IsAjaxRequest())
{
if (Request.IsAuthenticated)
{
// Authenticated Ajax request
}
else
{
// Non-authenticated Ajax request.
Response.StatusCode = (int)HttpStatusCode.Unauthorized;
return Json(new { response = "AUTHENTICATION_FAILED" });
}
}
问题是,如果我将 Response.StatusCode 设置为 Unauthorized,请求将被重定向到我的登录页面,这不利于 Ajax 请求。
对此问题的任何建议表示赞赏。
这是一个常见问题。
Authorize 属性返回 Http 401 Unauthorized 响应。但不幸的是,如果您启用了 FormsAuthentication,则 401 会被 FormsAuthenticationModule 拦截,然后执行重定向到登录页面 - 然后将 Http 200(和登录页面)返回到您的 ajax 请求。
最好的替代方法是修改您的授权代码以返回不同的 Http 状态代码(例如 403),该代码不会被 formsAuthenticationModule 捕获,您可以在 Ajax 方法中捕获。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)