我在我的应用程序中添加了一个 JWT 中间件:
app.UseJwtBearerAuthentication(options => { options.AutomaticAuthenticate = true;} )
不,有趣的是它会为所有操作抛出 500 个异常(在以后的版本中应该更改为 401),即使是那些根本不 protected 操作(没有授权属性)。在我看来,这是错误的,但也许我自己做错了什么。
理想情况下,我想要实现的是默认情况下所有操作都受到保护(在以前的 ASP.NET 中有过滤器),如果我想要其他操作,我会将匿名放在我想要公开的或者 Authorize("SomePolicy") 上政策,但我希望如果没有 token ,则根本无法访问 API。如何在新的 ASP.NET 中执行此操作(我知道我可以从具有此属性的某个 Controller 继承,但我希望有更好的方法)?
最佳答案
以 .Net Core 3
开头它的完成方式有点不同:
app.UseEndpoints(endpoints =>
{
endpoints
.MapControllers()
.RequireAuthorization(); // This will set a default policy that says a user has to be authenticated
});
可以更改默认策略或添加新策略并使用它。附言请注意,即使方法名称显示“授权”,默认情况下它也只要求用户经过身份验证。不过,可以添加更多策略来扩展验证。
关于c# - 如何在 ASP.NET Core 中默认使用不记名 token 保护所有 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994846/