Расширение AuthorizeAttribute переопределение AuthorizeCore или OnAuthorization


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

2 54

2 ответа:

ключ находится в обратном вида:

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

Do I want this user to proceed?

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

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

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

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

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