Использовал токен для защиты API без аутентификации

#java #spring #spring-boot #spring-security #jwt

#java #spring #весенняя загрузка #spring-безопасность #jwt

Вопрос:

Цель

Когда пользователь создает ресурс (нет необходимости подключаться), он получает уникальный токен, который затем он должен передавать на каждый запрос, который он отправляет для получения информации о своем ресурсе.

Вопрос

Есть простой способ сделать это с Spring? Действительно, все, что я нашел и прочитал, использовало аутентификацию с именем пользователя и паролем.

Уже пробовал

Моей первой идеей было создать токен в конце POST методов (сохранить его в базе данных), поместить его в каждый GET запрос и проверить, есть ли requestToken == databaseToken .

Однако я не думаю, что это лучший способ сделать это.

Итак, можете ли вы помочь мне и посоветовать, как решить проблему?

Большое спасибо!

Ответ №1:

Существует несколько способов.

Используя аннотацию @sessionAttributes:

При первом обращении к нашему контроллеру Spring создаст экземпляр и поместит его в модель. Поскольку мы также объявляем компонент в @sessionAttributes, Spring сохранит экземпляр.

Вы получите его внутри метода обработчика контроллера через @ModelAttribute.

Или вы можете попробовать этот маршрут:

 @RequestMapping(value = "/test")
public String handler(HttpSession httpSession) {
    httpSession.getId(); //this will give you unique identifier that you can set back to object that you send to front end and can share the same ID between requests. 
}
  

https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html#getId—