Подтвердить что ты не робот

Расширить авторизациюAttribute переопределить AuthorizeCore или OnAuthorization

Использование ASP.NET MVC Я создаю настраиваемый атрибут Authorize, чтобы позаботиться о какой-то пользовательской логике авторизации. Я рассмотрел множество примеров, и это довольно прямолинейно, но мой вопрос заключается в том, какой метод лучше всего переопределить, AuthorizeCore или OnAuthorization? Я видел много примеров, переопределяющих одно или другое. Есть ли разница?

4b9b3361

Ответ 1

Ключ находится в типах возврата:

AuthorizeCore возвращает логическое значение - это код принятия решения. Это должно быть ограничено просмотром идентификационной информации пользователя и тестированием, какие роли у них есть и т.д. И т.д. В принципе, он должен ответить на вопрос:

Do I want this user to proceed?

Он не должен выполнять никаких дополнительных действий "сбоку".

OnAuthorize возвращает void - здесь вы добавляете любую функциональность, которая должна произойти в данный момент. например Напишите в журнал, сохраните некоторые данные в сеансе и т.д. И т.д.

Ответ 2

Вы должны поместить любой код, который должен запускаться независимо от того, разрешен ли пользователь в первый раз, или если они используют кэшированную авторизацию в AuthorizeCore.

Если вы посмотрите на исходный код, вы увидите, что AuthorizeCore вызывается как OnAuthorize, так и OnCacheAuthorization. Это позволяет кэшировать авторизацию, но при этом допускать определенные действия и принимать фактические решения об авторизации.

Если вам нужно что-то из AuthorizationContext, вы можете создать свойство для хранения информации, а затем получить доступ к этому методу AuthorizeCore.