MVC Coreのすべてのアクションにグローバル認証を強制/設定する方法
グローバルフィルターの登録方法を知っています-たとえば、
_Setup.cs
services.AddMvc(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
_
これは正常に機能しますが、Authorizeに同じものを追加することはできません。
options.Filters.Add(new AuthorizeAttribute());
エラーがあります:
Cannot convert from 'Microsoft.AspNet.Authorization.AuthorizeAttribute()' to 'System.Type'
(Method .Add()
needs IFilterMetadata
type)
同様の質問から、これはMVC4-5で機能することがわかっています...したがって、MVCコアで何かを変更する必要があります...
誰かが何か考えている?
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
StartUp.csのConfigureServicesに次を追加します。これは、トークンの検証のためであり、すべての呼び出しがトークンで検証するように強制します。
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false
};
});
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})`
これをStartUp.csのConfigureメソッドに追加します。
app.UseAuthentication();
注:不要な場合は[AllowAnonymous]を使用してください