Как работать с атрибутом [Authorize] в .NET

Я новичок в .NET, читая о концепции фильтров, я наткнулся на атрибут [Authorize]. Всякий раз, когда мы применяем этот атрибут к контроллеру или методу действия, мы даже не можем получить доступ к контроллеру.

Большинство руководств и документов предоставляют эту информацию. Но я не могу понять, как этот атрибут [Authorize] узнает, авторизован пользователь или нет? Откуда он получает информацию о том, авторизован пользователь или нет?

Прочтите это: Learn.microsoft.com/en-us/aspnet/core/security/authentication‌​n/…

marc_s 30.09.2023 10:50

HttpContext приложения ASP.NET Core имеет свойство User, которое содержит информацию о текущем пользователе, включая информацию о том, авторизован он (или нет).

marc_s 30.09.2023 10:53

Тогда почему бы нам не использовать полностью httpcontext? Использует ли авторизация httpcontext в каком-либо классе или методе?

Srikanth Reddy 30.09.2023 11:08

Атрибут [Authorize] проверяет пользователя, вошедшего в систему в HttpContext, и, если пользователь не авторизован, он не позволит выполнить метод.

marc_s 30.09.2023 12:06

@marc_s, ты хочешь сказать, что httpcontext будет содержать запрошенные данные пользователя?

Srikanth Reddy 04.10.2023 10:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предполагаю, что вы говорите о веб-API или веб-приложениях ASP .NET (например, Blazor и т. д.), существует процесс авторизации, в котором пользователь API (клиент) должен получить ключ (токен) с сервера, чтобы докажем, что у него есть доступ к API, и с помощью атрибута [Authorize] мы убедимся, что пользователь, вызывающий конечную точку, имеет действительный токен и, следовательно, вошел в систему в нашем сервисе.

Для получения дополнительной информации вы можете найти токен JWT в .NET.

Какой класс или метод будет вызывать атрибут авторизации, чтобы убедиться, что пользователь действителен или нет?

Srikanth Reddy 30.09.2023 10:40

Авторизация обрабатывается автоматически с использованием ролей и политик идентификации. Если только вам не нужна нестандартная процедура авторизации. В этом случае вы можете просмотреть AuthorizationHandler и AuthorizationService.

IP.AF 01.10.2023 08:33
Ответ принят как подходящий

На самом деле атрибут [Authorize] в ASP.NET Core не вызывает напрямую определенный класс или метод для проверки пользователя. Поместите этот атрибут, чтобы позволить промежуточному программному обеспечению аутентификации или авторизации asp.net проверять, авторизован ли пользователь или нет.

Промежуточное программное обеспечение аутентификации используется для проверки подлинности пользователя с помощью файлов cookie или токенов аутентификации запроса. Оно добавит информацию о пользователе в утверждения.

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

Означает ли это, что, наконец, этот атрибут из промежуточного программного обеспечения проверяет утверждения для пользователя?

Srikanth Reddy 04.10.2023 10:52

Да, промежуточное ПО вызовет какой-то метод для проверки утверждений.

Brando Zhang 05.10.2023 03:25

Хорошо. Можем ли мы отследить, какой метод он вызывает?

Srikanth Reddy 05.10.2023 08:08

Метод OnAuthorizationAsync в классе AuthorizeFilter. Подробности вы можете проверить здесь Learn.microsoft.com/en-us/dotnet/api/…

Brando Zhang 06.10.2023 10:53

Другие вопросы по теме