在调试模式下未选择 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应用并调试