zoukankan      html  css  js  c++  java
  • 解决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信息。

  • 相关阅读:
    Hibernate sqlserver 的对象转成 Hibernate mysql 的对象时 需注意
    将绿色版Tomcat服务添加到系统服务并设为开机运行
    进程上下文和中断上下文
    关于上、下拉电阻的总结整理
    I2C设备驱动流程
    MTK6573的LDO控制
    iomem—I/O映射方式的I/O端口和内存映射方式的I/O端口
    Linux I2C子系统分析I2C总线驱动
    Camera读取ID方法总结
    Linux 信号signal处理机制
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286671.html
Copyright © 2011-2022 走看看