有没有办法让AuthorizeAttribute响应状态代码403 Forbidden而不是重定向?

时间:2011-01-19 20:55:23

标签: c# asp.net-mvc-2 http-status-code-403 authorize-attribute

如果用户未登录并且他们请求标记为[Authorize]的操作,则响应将重定向到Account / LogOn操作(状态代码302 Found)。

有没有办法让响应成为状态代码403 Forbidden?

2 个答案:

答案 0 :(得分:10)

创建一个继承自AuthorizeAttribute的操作过滤器。然后覆盖此方法:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{ 
   Response.StatusCode = 403;
   Response.Status = "Forbidden";
   Response.StatusDescription = "Forbidden";
   Response.End();
   Response.Close();

}

答案 1 :(得分:0)

如果用户未登录,则更合适的状态代码为401:未授权。这是AuthorizeAttribute默认返回的内容。

FormsAuthenticationModule将捕获此返回代码并将其转换为重定向。如果你可以禁用(或者甚至不加载它),那么这将返回给调用者。