Ответ 1
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
Как заставить/установить глобальную авторизацию для всех действий в 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'
(Метод .Add()
нужен тип IFilterMetadata
)
Я знаю - из похожих вопросов - что это работает на MVC4-5... Так что что-то должно измениться на MVC Core...
У кого-то есть идея?
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
Добавьте следующее к вашим ConfigureServices в StartUp.cs. Это для проверки токена и принудительной проверки всех вызовов с помощью токена.
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));
})'
Добавьте это в метод Configure в StartUp.cs.
app.UseAuthentication();
Примечание. Используйте [AllowAnonymous] для тех, кто вам не нужен