解决Shiro在Tomcat重启之后丢失登录信息
解决Shiro在Tomcat重启之后丢失登录信息
相关环境:
Spring Boot + Shiro + Tomcat
在项目中遇到这样一个问题:
需要在后台修改某一项配置,该配置采用配置文件的形式,并通过Spring映射为配置Bean,现在需要修改配置文件能够控制前端界面显示。
要实现的目标有两个:
1.修改完配置文件后需要将新配置写入到配置文件。
2.配置立即生效。
在调试环境(idea)idea下,修改配置文件后会自动重启项目,更新配置文件并加载Bean,配置生效,到达目标,但是会使得登录用户掉session,会要求重新登录,不方便,所以只能采取两种方式来达到效果:
1.在配置更新后刷新Bean
2.修改配置后重启项目,在重启之前序列化session,并在重启之后反序列化session,来保存登录状态
对于第一种方法,尝试后失败,故采用第二种。
利用Tomcat的session序列化到达目标:
Tomcat默认是关闭session序列化的,需要手动开启。
在conf目录下的context.xml中的Context节点下添加如下内容:
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true">
<Store className="org.apache.catalina.session.FileStore" directory="E:\tomcat\tomcat1\conf\aa"/>
</Manager>
directory是文件的存储路径。
当然只在这里配置是不行的,需让相应的Java类实现Serializable接口,这样才能实现序列化和反序列化,比如用户类是User,那么User类就需要实现Serializable接口,这样Tomcat才能保存并反序列化session,做到重启后保持session信息。
网络上志同道合,我们一起学习网络安全,一起进步,QQ群:694839022