Я новичок в .NET, читая о концепции фильтров, я наткнулся на атрибут [Authorize]. Всякий раз, когда мы применяем этот атрибут к контроллеру или методу действия, мы даже не можем получить доступ к контроллеру.
Большинство руководств и документов предоставляют эту информацию. Но я не могу понять, как этот атрибут [Authorize] узнает, авторизован пользователь или нет? Откуда он получает информацию о том, авторизован пользователь или нет?
HttpContext приложения ASP.NET Core имеет свойство User, которое содержит информацию о текущем пользователе, включая информацию о том, авторизован он (или нет).
Тогда почему бы нам не использовать полностью httpcontext? Использует ли авторизация httpcontext в каком-либо классе или методе?
Атрибут [Authorize] проверяет пользователя, вошедшего в систему в HttpContext, и, если пользователь не авторизован, он не позволит выполнить метод.
@marc_s, ты хочешь сказать, что httpcontext будет содержать запрошенные данные пользователя?





Я предполагаю, что вы говорите о веб-API или веб-приложениях ASP .NET (например, Blazor и т. д.), существует процесс авторизации, в котором пользователь API (клиент) должен получить ключ (токен) с сервера, чтобы докажем, что у него есть доступ к API, и с помощью атрибута [Authorize] мы убедимся, что пользователь, вызывающий конечную точку, имеет действительный токен и, следовательно, вошел в систему в нашем сервисе.
Для получения дополнительной информации вы можете найти токен JWT в .NET.
Какой класс или метод будет вызывать атрибут авторизации, чтобы убедиться, что пользователь действителен или нет?
Авторизация обрабатывается автоматически с использованием ролей и политик идентификации. Если только вам не нужна нестандартная процедура авторизации. В этом случае вы можете просмотреть AuthorizationHandler и AuthorizationService.
Ваш ответ можно улучшить, добавив дополнительную вспомогательную информацию. Пожалуйста, отредактируйте , добавив дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
На самом деле атрибут [Authorize] в ASP.NET Core не вызывает напрямую определенный класс или метод для проверки пользователя. Поместите этот атрибут, чтобы позволить промежуточному программному обеспечению аутентификации или авторизации asp.net проверять, авторизован ли пользователь или нет.
Промежуточное программное обеспечение аутентификации используется для проверки подлинности пользователя с помощью файлов cookie или токенов аутентификации запроса. Оно добавит информацию о пользователе в утверждения.
Затем промежуточное программное обеспечение авторизации проверит утверждения в соответствии со свойством атрибута [Authorize], например ролью или политикой, чтобы решить, может ли пользователь получить доступ к контроллеру или нет.
Означает ли это, что, наконец, этот атрибут из промежуточного программного обеспечения проверяет утверждения для пользователя?
Да, промежуточное ПО вызовет какой-то метод для проверки утверждений.
Хорошо. Можем ли мы отследить, какой метод он вызывает?
Метод OnAuthorizationAsync в классе AuthorizeFilter. Подробности вы можете проверить здесь Learn.microsoft.com/en-us/dotnet/api/…
Прочтите это: Learn.microsoft.com/en-us/aspnet/core/security/authenticationn/…