Shiro会话管理&&Ehcache缓存管理

目录

一、Shiro会话管理

        1.1 分析tomcat会话管理与Shiro会话管理的区别

        1.2 Shiro会话管理的使用

                1.2.1 实现SessionListener的监听器

                1.2.2 添加Spring-shiro的配置

                1.2.3 测试

二、Ehcache框架缓存管理

        2.1 关于缓存管理

        2.2 Ehcache缓存管理原理

        2.3 初始缓存

        2.4 Ehcache的使用

                2.4.1 导入pom依赖

                2.4.2 导入ehcache.xml文件

                2.4.3 导入EhcacheUtil类

                2.4.4 导入测试类进行测试

        2.5 授权使用缓存

                2.5.1 编写MyRealm的授权方法

                2.5.2 测试


一、Shiro会话管理

        1.1 分析tomcat会话管理与Shiro会话管理的区别

tomcat:用户第一次发送登录请求 ---> tomcat【将用户登录信息存入session】

               用户第二次发送功能请求 ---> 验证tomcat的session中是否存在用户的登录信息;

Shiro会话管理:用户第一次发送登录请求 ---> 对应多个tomcat

                           问题:会存在访问不到用户信息的tomcat的情况;

                           解决方法:【将用户登录信息存在tomcat的一个共有的位置ehcache中】

                           用户第二次发送功能请求 ---> 验证ehcache缓存中是否存在用户登录信息;

画图理解:

结论

Shiro的会话管理具备tomcat的会话管理的一切功能,

同时相较于tomcat的session,Shiro提供了对于分布式session的管理;

以上就是我们为什么要学习Shiro会话管理的原因;

        1.2 Shiro会话管理的使用

                1.2.1 实现SessionListener的监听器

   MySessionListener

package com.leaf.ssm.shiro;

import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionListener;

/**
 * @author Leaf
 * @site 2977819715
 * @company 玉渊工作室
 * @create  2022-08-29 9:42
 */
public class MySessionListener implements SessionListener {

    @Override
    public void onStart(Session session) {
        //登录发请求时
        System.out.println("MySessionListener.onStart 执行..."+session.getId());
    }

    @Override
    public void onStop(Session session) {
        //退出时执行
        System.out.println("MySessionListener.onStop 执行..."+session.getId());
    }

    @Override
    public void onExpiration(Session session) {
        //session有效期到时
        System.out.println("MySessionListener.onExpiration 执行..."+session.getId());
    }
}

                1.2.2 添加Spring-shiro的配置

                        ① sessionManager

                        ② cookie模板

    applicationContext-shiro.xml

<!--注册安全管理器-->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="shiroRealm" />
    <property name="sessionManager" ref="sessionManager"></property>
</bean>

<!-- Session ID 生成器 -->
<bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator">
</bean>

<!--sessionDao自定义会话管理,针对Session会话进行CRUD操作-->
<bean id="customSessionDao" class="org.apache.shiro.session.mgt.eis.MemorySessionDAO">
    <property name="sessionIdGenerator" ref="sessionIdGenerator"/>
</bean>

<!--会话监听器-->
<bean id="shiroSessionListener" class="com.leaf.ssm.shiro.MySessionListener"/>

<!--会话cookie模板-->
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
    <!--设置cookie的name-->
    <constructor-arg value="shiro.session"/>
    <!--设置cookie有效时间 永不过期-->
    <property name="maxAge" value="-1"/>
    <!--设置httpOnly 防止xss攻击: cookie劫持-->
    <property name="httpOnly" value="true"/>
</bean>

<!--SessionManager会话管理器-->
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <!--设置session会话过期时间 毫秒 2分钟=120000-->
    <property name="globalSessionTimeout" value="120000"/>
    <!--设置sessionDao-->
    <property name="sessionDAO" ref="customSessionDao"/>
    <!--设置间隔多久检查一次session的有效性 默认1分钟-->
    <property name="sessionValidationInterval" value="60000"/>
    <!--配置会话验证调度器-->
    <!--<property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>-->
    <!--是否开启检测,默认开启-->
    <!--<property name="sessionValidationSchedulerEnabled" value="true"/>-->
    <!--是否删除无效的session,默认开启-->
    <property name="deleteInvalidSessions" value="true"/>
    <!--配置session监听器-->
    <property name="sessionListeners">
        <list>
            <ref bean="shiroSessionListener"/>
        </list>
    </property>
    <!--会话Cookie模板-->
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Leaf1217

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值