HandleAuthenticateAsync вызывается даже без атрибута [Authorize] - PullRequest
0 голосов
/ 18 января 2019

Я использую пользовательский AuthenticationHandler, и только некоторые из моих методов контроллера имеют атрибут [Authorize]. Я регистрируюсь на уровне Info, и он создает запись в журнале для любого вызова метода. Теперь я не могу сказать отдельно, пытался ли кто-то на самом деле получить доступ к методу, который требует авторизации и потерпел неудачу, или это вызов метода, который даже не требует авторизации, и происходит сбой, потому что он должен.

Есть ли способ отличить их или желательно, чтобы MVC не звонил HandleAuthenticateAsync, когда это не нужно?

1 Ответ

0 голосов
/ 18 января 2019

Звучит так, как будто вы неправильно используете AuthenticationHandler. Вы не должны немедленно отклонять доступ, если пользователь не может пройти аутентификацию. Если вы сделаете это, он даже не достигнет контекста MVC в конвейере.

Если вы намеренно не хотите отклонить какой-либо доступ для неаутентифицированных пользователей, вам следует только аутентифицировать или передать его как анонимный пользователь. После этого в какой-то момент AuthorizeAttribute включится и проверит, есть ли у пользователя доступ к запрошенному ресурсу или нет. Если он не аутентифицирован, авторизация отклонит запрос.

...