У меня есть веб-приложение, в котором вы можете зарегистрироваться, используя заданные данные (имя пользователя, пароль). Затем на основе этих данных создается токен JWT и сохраняется в сеансе с использованием ключа jwt-token. Также у меня есть, например, главная страница моего приложения, я хочу, чтобы авторизованный пользователь мог перейти на этот ресурс, используя только ввод запроса в браузере. Вот мой код:
app.MapGet("/home", [Authorize]() => {
// return my page
});
Но для перехода на такой ресурс в запросе необходимо указать заголовок Authorization с токеном jwt, получается, что просто написав в браузере «www.mywebsite/home» не получится перейти на страницу /home потому что я не прошел этот заголовок, я решил эту проблему, добавив токен jwt в сессию и при переходе на страницу /home проверив его наличие и корректность.
Итак, мой вопрос: следует ли мне использовать аннотацию [Авторизовать] в моем случае или что я сделал неправильно?
Вы можете использовать:
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, это не проблема, но я также хочу иметь возможность перейти на страницу без написания дополнительных заголовков