Shiro Session管理——操作session

整体框架介绍

image.png

我们可以看到这个框架图,我们的整个交互都是与security Manager做交互,而这里面就有一个Session Manager的管理器,Shiro当然内置了实现,我们也可以根据接口拓展其功能,那么下面,我们就来了解一下shiro中关于Session管理的部分内容

DefaultWebSessionManager

这是一个管理器实现类,是shiro提供的可用的结构。

image.png

image.png

上面两个图是该SessionManager的方法,当然,这些方法并不是全部,因为这个默认的管理器其实继承于其他的一些结构,下面是整个sessionManager的UML图

image.png

有关这部分的源码分析,我会在下次有精力的时候用一篇文章更新

Shiro Session中的简单API

获取session对象

Shiro的会话支持不仅可以在普通JavaEE应用中使用,也可以在web应用中使用,且获取方式是一致的。

Subject subject = SecurityUtils.getSubject();

Session session = subject.getSession();

//这个参数用于判定会话不存在时是否创建新会话。

Session session = subject.getSession(boolean create);

可以使用subject.getSession()获取会话,其等价于subject.getSession(true),即如果当前没有创建Session对象,会创建一个。

获取会话的唯一标识

session.getId();

获取主机地址

session.getHost();

获取当前subject的主机地址,该地址是通过HostAuthenticationToken.getHost()提供的。

设置会话超时时间

//获取超时时间

session.getTimeout();

//设置超时时间

session.setTimeout(毫秒);

获取/设置当前Session的过期时间;如果不设置是默认的会话管理器的全局过期时间。

获取启动/访问时间

//获取会话的启动时间

session.getStartTimestamp();

//获取会话的最后访问时间

session.getLastAccessTime();

获取会话的启动时间和最后访问时间;如果是JavaSE应用需要自己定期调用session.touch()去更新最后访问时间;如果是web应用,每次进入ShiroFilter都会自动调用session.touch()来更新最后访问时间。

更新/删除会话

//更新会话最后访问时间

session.touch();

//销毁session会话

session.stop();

更新会话最后访问时间及销毁会话;当Subject.logout()时会自动调用stop方法来销毁会话的。如果在web中,调用javax.servlet.http.HttpSession. invalidate()也会自动调用Shiro Session.stop方法进行销毁Shiro的会话。

操作会话

session.setAttribute(“key”, “123”);

Assert.assertEquals(“123”, session.getAttribute(“key”));

session.removeAttribute(“key”);

设置/获取/删除会话属性;在整个会话范围内都可以对这些属性进行操作。

SessionManager负责创建和管理用户Session生命周期,在任何环境下都可以提供用户健壮的session体验。默认情况下,Shiro会使用容器自带的session机制,但若是容器不存在session,那么Shiro会提供内置的企业级session来管理。当然在开发中,也可以使用SessionDAO允许数据源持久化Session。

web容器中的session

参考博文

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值