36

Как заставить/установить глобальную авторизацию для всех действий в MVC Core?MVC Core Как заставить/установить глобальную авторизацию для всех действий?

Я знаю, как регистрировать глобальные фильтры - например, у меня есть:

Setup.cs 

services.AddMvc(options => 
{ 
    options.Filters.Add(new RequireHttpsAttribute()); 
}); 

и это работает отлично, но я не могу добавить то же самое для авторизовать:

options.Filters.Add(new AuthorizeAttribute());

У меня есть ошибка:

Cannot convert from 'Microsoft.AspNet.Authorization.AuthorizeAttribute()' to 'System.Type'

(метод .Add() необходим IFilterMetadata тип)


Я знаю, - от подобных вопросов - что это работает на MVC4-5 ... Так что надо что-то изменилось на MVC Ядра ...

Кто-то есть Есть идеи?

ответ

68
services.AddMvc(config => 
{ 
    var policy = new AuthorizationPolicyBuilder() 
        .RequireAuthenticatedUser() 
        .Build(); 
    config.Filters.Add(new AuthorizeFilter(policy)); 
}); 
+0

Спасибо за ответ :) –

+0

Позвольте мне спросить - на ваш взгляд - это его хорошая практика? Я должен делать WebApp для внутреннего использования, и я должен быть уверен, что он недоступен для публики. –

+0

Возможно, еще один вопрос: могло ли это (глобальное) решение иметь какое-либо негативное влияние, например, на производительность (по сравнению с использованием AuthorizeAttribute для каждого класса)? –

Смежные вопросы