是否调用方法“ SecurityUtils.getSubject();”会一直打到redis数据库吗?

时间:2019-04-01 12:41:15

标签: java spring-boot redis shiro

我正在我的项目中实现redis-shiro会话管理功能,目前我对Shiro&Redis的了解很少。

我想知道是否每次调用以下命令都会在redis数据库中访问一次,以检查redis数据库中是否存在任何sessionId。

服务中的代码

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

控制器中的代码:

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

由于我的应用程序将在多实例环境中运行,我们是否必须像下面在服务中那样手动匹配sessionId或Shiro会自动匹配它??

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

1 个答案:

答案 0 :(得分:0)

该会话最多可以为每个请求查询一次,具体取决于您配置的任何其他缓存。

但是,您不会直接从控制器中管理/查找sessionId。所有这些逻辑都是透明的,由Shiro和/或您的servlet容器的会话管理来处理。