Shiro会话管理

本文详细介绍了Shiro的会话管理和缓存管理。在会话管理部分,阐述了为什么使用Shiro会话,它与Tomcat会话的区别,以及实现Shiro会话的步骤。在缓存管理部分,解释了缓存的重要性,特别是Ehcache的特点和使用,包括其配置、核心API对象,并展示了授权如何利用缓存提高效率。
摘要由CSDN通过智能技术生成

目录

一、会话管理

1)为什么要用shiro会话

2)shiro会话和tomcat会话的区别

3)实现步骤

二、缓存管理

1、简介

2、实现步骤

 三、授权使用缓存


一、会话管理

1)为什么要用shiro会话

Shiro的会话管理具备tomcat的会话管理的一起功能;

想较于tomcat的session,shiro提供了对于分布式session的管理

2)shiro会话和tomcat会话的区别

tomcat:

 shiro:

 tomcat第一次访问会将用户存在于session中,再一次访问的时候还是会在同一个界面,然而shiro第一次访问的时候会将用户信息存在于公共区域,也就是缓存区,第二次访问的时候不一定是之前的页面,所以第二次shiro会去缓存区拿指

3)实现步骤

①、实现SessionListene的监听器

package com.mgy.ssm.shiro;

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

/**
 * @author 云鹤衫
 * @site www.yunheshan.com
 * @company xxx公司
 * @create  2022-08-29 8:45
 */
public class MySessionListener implements SessionListener {
    @Override
    public void onStart(Session session) {
        System.out.println("SessionListener.onStart 执行..."+session.getId());
    }

    @Override
    public void onStop(Session session) {
        System.out.println("SessionListener.onStop 执行..."+session.getId());
    }

    @Override
    public void onExpiration(Session session) {
        System.out.println("SessionListener.onExpiration 执行..."+session.getId());
    }
}

②、添加Spering-shiro的配置

  <!--注册安全管理器-->
    <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.zking.ssm.shiro.ShiroSessionListener"/>

    <!--会话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-->
        <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分钟-->
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值