Промежуточное ПО для пользовательской аутентификации в MVC 6
Я пытаюсь создать часть пользовательского промежуточного программного обеспечения аутентификации для MVC 6 и у меня есть несколько вопросов.
Во-первых, есть ли что-нибудь, что демонстрирует правильный способ реализации пользовательского промежуточного программного обеспечения аутентификации? Я пытался взломать существующий код фреймворка, но мне кажется, что это не лучший подход.
После выполнения вышеупомянутого взлома у меня получилось что-то похожее на то, что это может сработать, но я не уверен почему.
В моем Startup
класс, я добавил следующее:
services.ConfigureAuthorization(auth =>
{
auth.AddPolicy("TEST", new AuthorizationPolicyBuilder().AddAuthenticationSchemes("TEST").RequireAuthenticatedUser().Build());
});
Отсюда, если я добавлю [Authorize(Policy = "TEST")]
к действию контроллера, я вижу, что все работает, в частности, я вижу, что HandleUnauthorizedAsync
метод класса обработчика аутентификации запущен. Если я удалю Policy
значение из Authorize
атрибут, я получаю исключение, заявив, что "Следующая схема аутентификации не была принята:".
Я посмотрел на код, который создается из стандартного шаблона, и я не вижу ничего, где добавлена политика авторизации. Далее я могу добавить Authorize
атрибут без установки значения для Policy
и это работает (происходит перенаправление на страницу входа).
Зачем мне нужна политика авторизации в одном случае, а не в другом?
С одной стороны, это работает, поэтому я не должен беспокоиться, но мне нравится понимать, как все работает, чтобы я мог лучше устранять неполадки, как только возникают реальные проблемы.
* ОБНОВИТЬ *
После дополнительных раскопок я наткнулся на AutomaticAuthentication
собственность AuthenticationOptions
объект. Если я установлю это свойство на true
, указав значение для Policy
собственность Authorize
атрибут больше не нужен. Это похоже на шаг в правильном направлении, но я все еще ищу некоторые детали, связанные с этим открытием, если есть что-то, что нужно иметь.