解决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:	omcat	omcat1confaa"/>
</Manager>

directory是文件的存储路径。

当然只在这里配置是不行的,需让相应的Java类实现Serializable接口,这样才能实现序列化和反序列化,比如用户类是User,那么User类就需要实现Serializable接口,这样Tomcat才能保存并反序列化session,做到重启后保持session信息。

原文地址:https://www.cnblogs.com/cnsec/p/13286671.html