【问题标题】:Microsoft.AspNetCore.Authorization.AuthorizeAttribute returning 200 (OK) on failureMicrosoft.AspNetCore.Authorization.AuthorizeAttribute 在失败时返回 200 (OK)
【发布时间】:2021-01-19 03:50:49
【问题描述】:

我有一些类似的代码:

[HttpGet]
[Authorize("MyCustomPolicy")]
public string TestCall()
{
    var lanId = User.GetSomeClaimOnTheUserObject() ?? "Not Found";
    return "Hello From a TestCall Get Operation.  Claim is " + lanId;
}

授权策略如下所示:

var myCustomPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .AddAuthenticationSchemes("SomeScheme")
    .Build();
options.AddPolicy("MyCustomPolicy", myCustomPolicy);

当我调用它时,如果 AuthenticationScheme 已经满足,它允许调用,如果没有满足则阻止它(如预期的那样)。

不起作用的部分是当它阻止调用时,我希望返回 403 或可能返回 401,但我得到的是返回 200(OK)。

Authorize 属性失败时,如何让它返回 401?

【问题讨论】:

    标签: security asp.net-core authorization asp.net-core-3.1


    【解决方案1】:

    我遇到了同样的问题,经过一番搜索,我发现基本上这个 AuthorizeAttribute 将在身份验证失败时返回带有登录页面的视图,而不是给出 401。要解决这个问题,你可能想试试这个 answer 或基于在您的用例中搜索其他一些示例,但基本上问题的原因是相同的。

    【讨论】:

      猜你喜欢
      • 2014-05-17
      • 2020-04-02
      • 1970-01-01
      • 2013-11-15
      • 2015-04-26
      • 1970-01-01
      • 2022-10-04
      • 2011-03-25
      • 2019-10-29
      相关资源
      最近更新 更多