Shiro 登录、退出、校验是否登录涉及到的Session和Cookie

前提

我们的使用的是DefaultWebSessionManager而不是ServletContainerSessionManager。这就意味着前者的session为Shiro的,后者的session为Tomcat的。

登录

  DefaultWebSessionManager调用start()方法(在AbstractNativeSessionManager中)创建Session(SimpleSession),创建过程中会将Session放到介质(Redis)中,再调用onStart()方法将sessionId放入到浏览器的Cookie中。

  我们已经拿到Session(SimpleSession)了可以将用户相关信息放到其中:session.setAttribute("userName", userName);,这个过程是放到了SimpleSession的一个Map属性中,同时更新介质中的SimpleSession。

退出

  DefaultWebSessionManager调用stop(SessionKey key)方法(在AbstractNativeSessionManager中),SimpleSession设置停止时间戳,再调用onStop()方法设置最后访问时间戳并更新介质中的session,清除浏览器中关于session的Cookie。

校验是否登录

  我们可以通过Session是否存在并且session中的用户信息是否存在来判断或者是Cookie是否存在或者是Subject.isAuthenticated()是否为false,有其一不成立就执行退出操作。

转载于:https://www.cnblogs.com/BINGJJFLY/p/9525526.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值