在调试模式下未选择 DotNetCore 授权策略

Posted

技术标签:

【中文标题】在调试模式下未选择 DotNetCore 授权策略【英文标题】:DotNetCore Authorization Policy not being picked up in debug mode 【发布时间】: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 运行程序时,我没有收到此异常,它能够获取授权属性。

为什么会这样?

【问题讨论】:

【参考方案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")]

【讨论】:

以上是关于在调试模式下未选择 DotNetCore 授权策略的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 检查器 - 远程调试器 - 在托管模式下未启用剪贴板。请使用 chrome://inspect 检查

dotnetCore系列:使用Visual Studio code 创建DotNet Core 1.0应用并调试

dotnetCore系列:使用Visual Studio code 创建DotNet Core 1.0应用并调试

redis未授权访问

Redis未授权访问漏洞复现与利用

Redis未授权访问漏洞复现与利用