Shiro学习笔记之(六)Apache Shiro 会话管理

上一篇  Shiro学习笔记之(五)Apache Shiro 授权

一、获取session

    Shiro 中获取session方法比较简单


二、SessionManager  

    SessionManager为subject提供session管理,包括创建,删除,失效,验证等。SessionManager默认实现DefualtSessionManager.自定义SessionManager可在shiro.ini中配置。


2.1 Session Timeout

 session超时默认是30分钟。自定义配置


注意单位是毫秒,1小时=1000*60*60,globalSessionTimeout 是默认所有的session的超时设置,也可以通过Per-Session Timeout 设置单独的会话超时时间值。

2.2 Session Listeners

Shiro支持SessionListener对会话进行监听,实现SessionManager接口(或者SessionListenerAdapter)来作出相应的处理。在shiro.ini中配置。当任何会话事件发生时,SessionListener都会被通知,不是针对某一个特定的会话。


2.3 Session Storage

当会话创建或者更新时,数据需要持久化到一个存储位置,以便它能够被应用程序访问,会话失效时就会从存储位置删除。SessionManager 支持这些操作,SessionDAO反映了数据访问对象设计模式,SessionDAO的作用是任何数据存储进行通信。

SessionDAO可以自定义,在[main]selction下配置


2.4 EHCache SessionDAO

 EHCache默认未启用的,可以使用SessionManagement启用EHCache。EHCache SessionDAO将会在内存中保存会话,溢出时保存到磁盘,如下配置使用EHCache。


2.5 Custom Session IDs

    SessionDAO 在创建一个新的会话时,使用一个内置的SessionIdGenerator组件来生产一个新的Session ID,并与创建的session实例绑定,然后通过sessionDAO保存下来。

2.6 Session Validation & Scheduling

 Session 验证,将无效的会话从会话数据存储中删除,保证存储不会由于不能再次使用的会话而导致写入超时。SessionManager支持SessionValidationScheduler,负责定期地验证会话以确保它们是否需要清理。默认可用的SessionValidationScheduler是ExecutorServiceSessionValidationScheduler,默认每小时验证一次,也可自行配置。


SessionValidationScheduler也可以自行实现,然后配置。如果希望禁止定期验证session,可以这样配置

securityManager.sessionManager.sessionValidationSchedulerEnabled = false,但是会话从会话数据存储取回数据时仍然会被验证,只是不会定期验证了。



猜你喜欢

转载自blog.csdn.net/qq_39527230/article/details/80774984