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

发布于 2024-10-13 14:18:41 字数 121 浏览 7 评论 0原文

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

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

If the user is not logged in and they request an action marked [Authorize], then the response is a redirect to the Account/LogOn action (status code 302 Found).

Is there a way to make the response be status code 403 Forbidden instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

第七度阳光i 2024-10-20 14:18:41

创建一个继承自 AuthorizeAttribute 的操作过滤器。然后重写这个方法:

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

}

Create an action filter that inherits from AuthorizeAttribute. Then override this method:

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

}
逐鹿 2024-10-20 14:18:41

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

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

If the user is not logged in then the more appropriate status code is 401:Unauthorized. This is what the AuthorizeAttribute returns by default.

FormsAuthenticationModule will catch this return code and convert it into the redirect. If you can disable (or not even load it) then this will be returned to the caller.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文