Ily*_*dik 10 authentication jwt asp.net-identity asp.net-core
我在我的应用程序中添加了一个JWT中间件:
app.UseJwtBearerAuthentication(options => { options.AutomaticAuthenticate = true;} )
Run Code Online (Sandbox Code Playgroud)
没有趣的是,它会为所有操作抛出500异常(在以后的版本中应该更改为401),即使那些根本没有受到保护的(没有authorize属性).在我看来,这是错误的,但也许我自己做错了什么.
理想的情况是什么,我想实现的是,所有操作都在默认情况下保护(有针对以往ASP.NET过滤器),并且我会把匿名在那些我想公众或者是授权("SomePolicy")如果我想更多的策略,但我希望在没有令牌的情况下无法访问API.我如何在新的ASP.NET中执行此操作(我知道我可以从具有此属性的某个控制器继承,但我希望有更好的方法)?
Ily*_*dik 46
从.Net Core 3有一点不同的方式开始:
app.UseEndpoints(endpoints =>
{
endpoints
.MapControllers()
.RequireAuthorization(); // This will set a default policy that says a user has to be authenticated
});
Run Code Online (Sandbox Code Playgroud)
可以更改默认策略或添加新策略并使用它。
PS 请注意,即使方法名称显示“授权”,默认情况下它也只要求用户经过身份验证。不过,可以添加更多策略来扩展验证。
Joe*_*tte 28
您仍然可以使用此示例中的过滤器:
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
Run Code Online (Sandbox Code Playgroud)
此示例中的策略非常简单,但有很多方法可以为各种需求,角色等配置策略.
| 归档时间: |
|
| 查看次数: |
5382 次 |
| 最近记录: |