如果用户未登录并且他们请求标记为[Authorize]
的操作,则响应将重定向到Account / LogOn操作(状态代码302 Found)。
有没有办法让响应成为状态代码403 Forbidden?
答案 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将捕获此返回代码并将其转换为重定向。如果你可以禁用(或者甚至不加载它),那么这将返回给调用者。