Использую ли я аннотацию [Авторизовать]?

У меня есть веб-приложение, в котором вы можете зарегистрироваться, используя заданные данные (имя пользователя, пароль). Затем на основе этих данных создается токен JWT и сохраняется в сеансе с использованием ключа jwt-token. Также у меня есть, например, главная страница моего приложения, я хочу, чтобы авторизованный пользователь мог перейти на этот ресурс, используя только ввод запроса в браузере. Вот мой код:

app.MapGet("/home", [Authorize]() => {
    // return my page
});

Но для перехода на такой ресурс в запросе необходимо указать заголовок Authorization с токеном jwt, получается, что просто написав в браузере «www.mywebsite/home» не получится перейти на страницу /home потому что я не прошел этот заголовок, я решил эту проблему, добавив токен jwt в сессию и при переходе на страницу /home проверив его наличие и корректность.

Итак, мой вопрос: следует ли мне использовать аннотацию [Авторизовать] в моем случае или что я сделал неправильно?

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

Ответы 2

Ответ принят как подходящий

Вы можете использовать:

app.MapGet("/home", () => {
    // return my page
}).RequireAuthorization();

Более подробную информацию (включая JWT) можно найти в документации.

Итак, мой вопрос: следует ли мне использовать аннотацию [Авторизовать] в моем случае или что я сделал неправильно?

Это по вашему требованию, как вы сказали I want an authorized user to be able to go to this resource using only a query input in the browser.

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

Поскольку, если запрос содержит токен JWT, после декодирования токена JWT сервер может узнать имя пользователя или некоторую информацию о пользователе из этого токена, что может позволить вам записать разрешение роли или защитить ресурсы внутри вашего приложения.

Смотрите для перехода на ресурс с аннотацией [Авторизация] нужно в шапках указать заголовок «Авторизация» и только тогда ресурс вернет страницу иначе будет ошибка 401 Unauthorized, получается зайти на такой ресурс в моем приложении необходимо использовать Javascript, это не проблема, но я также хочу иметь возможность перейти на страницу без написания дополнительных заголовков

user24736035 27.05.2024 16:48

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