Расширение AuthorizeAttribute переопределение AuthorizeCore или OnAuthorization
использование ASP.NET MVC я создаю пользовательский атрибут авторизации, чтобы позаботиться о некоторой пользовательской логике авторизации. Я посмотрел на много примеров, и это довольно прямо вперед, но мой вопрос в том, какой метод лучше всего переопределить, AuthorizeCore или OnAuthorization? Я видел много примеров переопределения одного или другого. Есть ли разница?
2 ответа:
ключ находится в обратном вида:
AuthorizeCore
возвращает логическое значение - это принятие решений код. Это должно быть ограничено просмотром удостоверения пользователя и проверкой, в каких ролях они находятся и т. д. так далее. В основном он должен ответить на вопрос:
Do I want this user to proceed?
Он не должен выполнять никаких дополнительных мероприятиях "на стороне".
OnAuthorize
возвращает void-это где вы ставите любой функциональность что нужно происходят в этот момент. например, запись в журнал, хранение некоторых данных в сеансе и т. д.
вы должны поместить любой код, который должен выполняться независимо от того, авторизован ли пользователь в первый раз, или если они используют кэшированную авторизацию в
AuthorizeCore
.если вы посмотрите на исходный код, вы можете увидеть, что
AuthorizeCore
вызывается какOnAuthorize
иOnCacheAuthorization
. Это позволяет кэшировать авторизацию, но все же позволяет выполнять определенные действия и принимать фактические решения об авторизации.Если вам нужно что-то из AuthorizationContext затем вы можете создать свойство для хранения информации, а затем получить к нему доступ в методе AuthorizeCore.