Вызывает ли метод "SecurityUtils.getSubject ();" всегда будет попадать в базу данных Redis? - PullRequest
1 голос
/ 01 апреля 2019

В моем проекте реализована функция управления сессиями redis-shiro, и в настоящее время у меня очень мало информации о Shiro & Redis.

Я хочу знать, будет ли вызов нижеуказанного попадать в базу данных redis каждый раз, чтобы проверить, существует ли sessionId в базе данных redis или нет.

Код в сервисе

Subject currentUser = SecurityUtils.getSubject();
 Session session = currentUser.getSession();

Код в контроллере:

 public String getSomrthing(@CookieValue("JSESSIONID") String fooCookie){
       callingSomeServiceMethod(fooCookie);
       return "It does not matter";
   }

Должны ли мы сопоставлять идентификатор сеанса вручную, как показано ниже в нашем сервисе, или же Широ будет сопоставлять его автоматически, поскольку мое приложение будет работать в среде с несколькими экземплярами .?

Subject currentUser = SecurityUtils.getSubject();
   if(currentUser.getId.equals(fooCookie)){
        //.....Some Code 
       //.....Some Code
  }

1 Ответ

0 голосов
/ 03 апреля 2019

Сеанс будет искать максимум один раз за запрос, меньше в зависимости от того, какое дополнительное кэширование вы настроили.

Вы не сможете управлять / искать sessionId напрямую с вашего контроллера.Вся эта логика будет прозрачной и обрабатывается Shiro и / или системой управления сеансами вашего контейнера сервлетов.

...