【问题标题】:DotNetCore Authorization Policy not being picked up in debug mode在调试模式下未选择 DotNetCore 授权策略
【发布时间】:2017-04-30 10:39:33
【问题描述】:

我在 startup.cs 中配置了身份验证策略

services.AddAuthorization(auth =>
        {
            auth.AddPolicy("Bearer", policy => policy
                .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)
                .RequireAuthenticatedUser().Build());

        });

我在 api 控制器的属性中使用它:

[Authorize("Bearer")]

当我在 VS 代码中运行调试器时,我得到一个异常: fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HL14EICAK26S": An unhandled exception was thrown by the application. System.InvalidOperationException: The AuthorizationPolicy named: 'Bearer' was not found. at Microsoft.AspNetCore.Authorization.AuthorizationPolicy.<CombineAsync>d__9.MoveNext()

当我通过dotnet run 运行程序时,我没有收到此异常,它能够获取授权属性。

为什么会这样?

【问题讨论】:

    标签: c# asp.net-core jwt asp.net-authorization .net-core


    【解决方案1】:

    清理、恢复和重建项目......它又神奇地工作了......

    【讨论】:

      【解决方案2】:

      我需要添加以下内容才能让我的项目中的所有内容都正常工作。这里是 Startup.cs

      //Authentication
      services.AddAuthentication()
          .AddScheme<AuthOptions1, AuthenticationHandler1>("Scheme1", opt => { })
          .AddScheme<AuthOptions2, AuthenticationHandler2>("Scheme2", opt => { });
      
      //Authorization
      services.AddAuthorization(opt =>
      {
          opt.AddPolicy("Policy1", policy =>
          {
              policy.AddAuthenticationSchemes("Scheme1");
              policy.RequireAuthenticatedUser();
          });
          opt.AddPolicy("Policy2", policy =>
          {
              policy.AddAuthenticationSchemes("Scheme2");
              policy.RequireAuthenticatedUser();
          });
      });
      

      然后在我的控制器中我添加了这个:

      [Authorize("Policy1")]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 2016-02-08
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        相关资源
        最近更新 更多