如果用户未登录并且他们请求标记为[Authorize]
的操作,则该响应将重定向到Account/LogOn操作(状态码302 Found)。有没有办法让AuthorizeAttribute响应状态码403 Forbidden而不是重定向?
有没有办法让响应成为状态码403 Forbidden?
如果用户未登录并且他们请求标记为[Authorize]
的操作,则该响应将重定向到Account/LogOn操作(状态码302 Found)。有没有办法让AuthorizeAttribute响应状态码403 Forbidden而不是重定向?
有没有办法让响应成为状态码403 Forbidden?
创建一个继承自AuthorizeAttribute
的动作过滤器。然后覆盖此方法:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
Response.StatusCode = 403;
Response.Status = "Forbidden";
Response.StatusDescription = "Forbidden";
Response.End();
Response.Close();
}
如果用户未登录,则更合适的状态码是401:未经授权。这是AuthorizeAttribute默认返回的内容。
FormsAuthenticationModule将捕获此返回码并将其转换为重定向。如果你可以禁用(或者甚至不加载它),那么这将被返回给调用者。
这是用于REST接口吗? – 2011-01-19 20:59:52