登录成功后使用Subject.getSession()即可获取会话;其等价于Subject.getSession(true),即如果当前没有创建Session对象会创建一个;

另外Subject.getSession(false),如果当前没有创建Session则返回null(不过默认情况下如果启用会话存储功能的话在创建Subject时会主动创建一个Session)。

JAVA代码

session.getId();

获取session唯一id

session.getHost(); 

获取当前Subject的主机地址,该地址是通过HostAuthenticationToken.getHost()提供的。

session.getTimeout();
session.setTimeout(毫秒);

获取/设置当前Session的过期时间;

session.getStartTimestamp();
session.getLastAccessTime();

获取会话的启动时间及最后访问时间

会话管理器

会话管理器管理着应用中所有Subject的会话的创建、维护、删除、失效、验证等工作。是Shiro的核心组件,顶层组件SecurityManager直接继承了SessionManager,且提供了SessionsSecurityManager实现直接把会话管理委托给相应的SessionManager,DefaultSecurityManager及DefaultWebSecurityManager默认SecurityManager都继承了SessionsSecurityManager。

1.自定义SessionDao 持久化session 相关信息

@Component
public class ShiroSessionDao extends CachingSessionDAO     {@Autowiredprivate SessionDao sessionDao;@Overridepublic Serializable doCreate(Session session) {ShiroSession ss = new ShiroSession();Serializable sessionId = generateSessionId(session);assignSessionId(session, sessionId);ss.setSession(sessionId.toString());ss.setHost(session.getHost());sessionDao.createSession(ss);return sessionId;}@Overridepublic void doDelete(Session session) {Serializable sessionId = session.getId();sessionDao.deleteSession(sessionId.toString());}@Overrideprotected Session doReadSession(Serializable sessionId) {return super.getCachedSession(sessionId);}@Overrideprotected void doUpdate(Session session) {}}

2.配置SessionManager

   //配置设置会话ID生成器,
    @Beanpublic JavaUuidSessionIdGenerator sessionIdGenerator(){return new JavaUuidSessionIdGenerator();}@Beanpublic SessionDAO getSessionDao(){ShiroSessionDao sessionDao = new ShiroSessionDao();sessionDao.setSessionIdGenerator(sessionIdGenerator());return sessionDao;}@Beanpublic SessionManager sessionManager(){SessionManager sessionManager = new SessionManager();ExecutorServiceSessionValidationScheduler scheduler = new ExecutorServiceSessionValidationScheduler();scheduler.setInterval(180000); scheduler.setSessionManager(sessionManager); sessionManager.setGlobalSessionTimeout(180000);sessionManager.setSessionValidationScheduler(scheduler);sessionManager.setSessionDAO(getSessionDao());return sessionManager;}@Beanpublic EhCacheManager  cacheManager(){EhCacheManager cache = new EhCacheManager();cache.setCacheManagerConfigFile("classpath:ehcache.xml");return cache;}

    @Bean
    public SecurityManager securityManager() {
      DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
      securityManager.setRealm(myShiroRealm());
      securityManager.setSessionManager(sessionManager());
      securityManager.setCacheManager(cacheManager());
      return securityManager;
    }

ExecutorServiceSessionValidationScheduler:会话验证调度器,定时检测会话是否过期

现在用户会话都会保存到数据库中,由ExecutorServiceSessionValidationScheduler定时检测是否过期

转载于:https://www.cnblogs.com/zls1218/p/8856347.html

(四) Session管理 --《springboot与shiro整合》相关推荐

  1. 《SpringBoot与Shiro整合-权限管理实战---从构建到模拟数据库登入》

    <SpringBoot与Shiro整合-权限管理实战> ---- 从构建到模拟数据库登入 ---- 点击下载源码 ---- 或者查看? 文章目录 <SpringBoot与Shiro整 ...

  2. SpringBoot与Shiro整合-概述

    主要讲解如何使用Spring Boot与Shiro进行整合使用,实现强大的用户权限管理,其中涉及如何完成用户认证(即用户登录),用户授权,thymeleaf页面整合shiro权限标签等知识点 Spri ...

  3. springboot 与shiro整合

    shiro~ shiro快速入门 springboot 整合shiro 核心目标 清爽pom 用户认证授权认证,与数据库交互 shiro configuration 核心controller 获取sh ...

  4. 【超详细】SpringBoot与Shiro整合-权限管理实战实操(附源码地址)

    一.搭建SpringBoot开发环境 1. 安装好开发软件和Maven等 开发工具:Spring Tool Suite(TST) Maven :3.3.9 jdk:1.8 2. 创建springboo ...

  5. SpringBoot+Mybatis-Plus+Shiro整合的RBAC权限系统

    Maven仓库: dependencies><dependency><groupId>org.springframework.boot</groupId>&l ...

  6. SpringBoot基于Shiro整合OAuth统一认证

    修改配置文件application.yml

  7. 【Shiro】shiro的Session管理

    [Shiro]shiro的Session管理 1. Session管理介绍 2. JavaSE环境下 3. JavaEE环境下 4. Session监听 5. Session检测 1. Session ...

  8. 基于SpringBoot的SSM整合案例 -- SpringBoot快速入门保姆级教程(四)

    文章目录 前言 1.设计创建数据库表tbl_book 2.创建新的SpringBoot模块,勾选相关依赖 3. 添加SpringBoot创建项目时没有提供的相关坐标 4.根据数据库表创建实体类Book ...

  9. SpringBoot 优雅的整合 Shiro

    Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理.借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最 ...

  10. springBoot中shiro与Redis整合的配置文件

                                                                 springBoot中shiro与Redis整合的配置文件 整合依赖: < ...

最新文章

  1. Redis三种特殊类型
  2. hpe服务器有哪些型号,HPE ProLiant DL80 Gen9 服务器 - 惠普服务器配置参数
  3. swap 将硬盘变内存
  4. JSTracker:前端异常数据采集
  5. linux下/proc/cpuinfo 文件分析
  6. C# 代码生成器 (存储过程生成方法)
  7. C#笔记(一):类型,泛型,集合
  8. Android UI 控件
  9. 渠道对账及差错处理系统设计
  10. 精致露营“风”,“吹”进小家电市场
  11. 小米最新系统android 10,小米新系统到来!基于Android Q的MIUI 10到底有哪些变化?小米9可尝鲜...
  12. 开源中国众包第三波阿里云悬赏项目,总金额 6 万
  13. WT2605-24SS音频解码芯片,实现宠物(玩具)喂食器远程更新语音技术方案解析
  14. Java --- 线程同步和异步的区别
  15. <汇编>七种寻址方式
  16. 空间分析与应用实验报告实验一燕麦试验田选址
  17. 2021华数杯C题总结
  18. MyBatis中的#和$之间的区别
  19. 想开水果店但是没有经验,想开水果店没有经验怎么办
  20. 利用WPF建立自己的3d gis软件(非axhost方式)(七)实现简单的粒子效果

热门文章

  1. C# 使用 Task 替换 ThreadPool ,异步监测所有线程(任务)是否全部执行完毕
  2. Oracle数据库的静默安装详解
  3. to teacher eulogy
  4. 两个年月下拉列表html,html年月日下拉联动菜单 年月日三下拉框联动
  5. ssh 远程连接失败 PTY报错
  6. stm32死机问题的处理
  7. 判断一个数是否为质数
  8. Max and Min---递归
  9. 性能可靠塔式服务器,塔式服务器备受企业关注的原因有哪些
  10. 计算机资源管理器课件,资源管理器ppt课件