Shiro在Spring的会话管理(session)

您所在的位置:网站首页 spring操作session Shiro在Spring的会话管理(session)

Shiro在Spring的会话管理(session)

#Shiro在Spring的会话管理(session)| 来源: 网络整理| 查看: 265

会话管理 在shiro里面可以发现所有的用户的会话信息都会由Shiro来进行控制,那么也就是说只要是与用户有关的一切的处理信息操作都可以通过Shiro取得,实际上可以取得的信息可以有用户名、主机名称等等,这所有的信息都可以通过Subject接口取得。

System.out.println("SESSION ID = " + SecurityUtils.getSubject().getSession().getId()); System.out.println("用户名:" + SecurityUtils.getSubject().getPrincipal()); System.out.println("HOST:" + SecurityUtils.getSubject().getSession().getHost()); System.out.println("TIMEOUT :" + SecurityUtils.getSubject().getSession().getTimeout()); System.out.println("START:" + SecurityUtils.getSubject().getSession().getStartTimestamp()); System.out.println("LAST:" + SecurityUtils.getSubject().getSession().getLastAccessTime());

其中“getLastAccessTime()”这个方法表示该用户的最后一次操作时间; 现在这些基础的信息的确都取得了,可是这些都属于Shiro中的默认配置,而用户1、如果有需要也可以使用手工配置的模式完成。

org.apache.shiro shiro-quartz commons-collections commons-collections 3.2.2

如果要进行session管理,一定要定期释放空间,所以这个时候一定需要定时组件才可以完成。 2、 可以配置一个属于自己的Session ID生成器:

3、 随后需要定义有一个会话的DAO处理,指的是你的会话的缓存位置,本次暂时将所有的会话数据保存在内存里面。 · 会话保存处理:org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO

4、 现在只是定义了缓存所需要的组件,但是并没有定义session与客户端的之间的联系,为了进行有效的session管理所以还需要建立有一个Cookie的操作模版。 · 处理Cookie:org.apache.shiro.web.servlet.SimpleCookie

5、 定义会话管理器(sessionManager) · 操作类:org.apache.shiro.web.session.mgt.DefaultWebSessionManager;

6、 所有的session一定要在用户正确离开之后才能够进行资源的释放,但是用户如果不点注销,不能够进行session的清空处理,所以为了防止这样的问题,还需要增加有一个会话的验证调度器。 · 调度器程序类:org.apache.shiro.session.mgt.quartz.QuartzSessionValidationScheduler

7、 随后需要修改安全管理器:

此时就表示当前WEB开发中的所有的session的处理操作都交由Shiro来进行操作控制。 8、 另外的方法: · 更新会话:SecurityUtils.getSubject().getSession().touch(); 停止会话:SecurityUtils.getSubject().getSession().stop(); |-相当于WEB开发中的:session.invalidate()方法的执行; |-注销:SecurityUtils.getSubject().logout()。

Shiro对于Session管理有自己的实现机制,这些机制如果与WEB的操作重叠了,那么Shiro的配置将起作用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3