[Blog]ShiroSessiosn创建

本文详细介绍了Shiro框架中Session的创建、查询、刷新、过期和删除操作,以及如何自定义Session管理和实现Session在分布式环境中的共享,包括使用DefaultWebSecurityManager、SessionManager以及Redis作为Session存储。通过装饰者模式和SessionDAO接口,实现session的持久化和缓存管理。
摘要由CSDN通过智能技术生成

SecurityManager

  • 安全管理器,所有与安全相关的操作都会与SecurityManager交互(负责与shiro的其他组件进行交互,类似与SpringMVC中的DispatcherServlet)
  • 管理着所有Subject,所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager
  • Shiro使用时会先初始化SecurityManager再往里面注入shiro其他组件
  • spring-boot-shiro中初始化的是DefaultWebSecurityManager,默认情况下,session的管理由DefaultSecurityManager或DefaultWebSecurityManager中的SessionManager来负责

DefaultSecurityManager

使用较少

DefaultWebSecurityManager

  • 默认的web安全管理器,应用项目中需要初始化此安全管理器
  • 可以通过继承DefaultSecurityManager或DefaultWebSecurityManager来实现自定义SecurityManager,但一般没必要,直接使用DefaultWebSecurityManager就可满足需求
  • DefaultWebSecurityManager则将session管理委托给ServletContainerSessionManager
  • 可以通过setSessionManager方法来指定sessionManager,如果不指定sessionManager的话就用的SecurityManager默认的sessionManager

SessionManager

  • SecurityManager会将session管理委托给SessionManager
  • SessionsSecurityManager的start方法中将session的创建委托给了具体的sessionManager,start方法是创建session的关键入口

SimpleSession

  • shiro的自实现,是shiro对session的一种拓展,实现了ValidatingSession接口,具有自我校验的功能
  • 一般不对外暴露,暴露的往往是他的代理:DelegatingSession
SimpleSession属性
  • id:就是session id;

  • startTimestamp:session的创建时间;

  • stopTimestamp:session的失效时间;

  • lastAccessTime:session的最近一次访问时间,初始值是startTimestamp

  • timeout:session的有效时长,默认30分钟

  • expired:session是否到期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值