• 对shiro的session的理解


    以问答的形式

    1:session的作用是什么?

    和web容器中的session作用一样,就是用于记录浏览器和服务器之间的交互

    2:登录状态和session有没有关系?

    登录认证成功之后,shiro是将认证信息存储在session中的,以后的每次请求肯定会在过滤器中判断session中有没有认证信息,以作为放行的依据。

    3:为什么要把session持久化,即为sessionDao?是为了分布情况下共享session吗?

    把session持久化的原因有多个,分布式情况下共享session应该是原因之一;持久化就是通过sessionDao完成的。默认情况下,sessionDao的实现是MemorySessionDAO,即把session保存在内存中

    也可以通过这篇文章了解:https://blog.csdn.net/ITWANGBOIT/article/details/102697522

    4:sessionManager可以设置cacheManager?sessionDao也可以设置CacheManager?

    通过查看源码发现:给sessionManager设置的CacheManager最终还是供sessionDao使用,目的就是持久化session到缓存中

    5:Subject.login()登录成功后用户的认证信息实际上是保存在HttpSession中的。如果此时Web应用程序部署了多实例,必须要进行Session同步。

    怎么实现?

    6:SessionDao的作用到底是什么?

    目的是为了将session持久化在内存中(MemorySessionDAO ),或者redis中(shiro-redis)

    也可以通过这篇文章了解:https://blog.csdn.net/ITWANGBOIT/article/details/102697522

    7:Shiro提供了Session的支持,主要用途是在Service层获取到Handler层的Session的信息,推荐在Handler层使用HttpSession。

    实际上httpSession和ShiroSession是一样的,主要受SessionManager的控制。

    8:会话验证调度器?

    默认是开启的,用来验证session的是否过期

    9:session的有效期可以设置,如果session被sessionDao存储了,那么到达有效期时,是不是也会被删除?

    是的,sessionDao持久化session是有原因的,所以到了有效期,也是会删除session的

    10:在用户未退出登录的情况下,关闭浏览器,然后再重新打开一个浏览器去访问系统,为什么展示的就是登录页面?

    关闭了浏览器,cookie失效了,重新打开一个浏览器访问系统时,是没有带着cookie的,所以服务器会认为这是一个全新的访问者,会创建一个全新的session为这次请求服务,上次的session就坐等失效。

    11:session到期

    默认情况下,session到期后,shiro是让其重定向到登录页面,我们可以通过覆盖user过滤器,来改变shiro的重定向行为。

    可以参考一下几篇文章:

    https://www.iteye.com/blog/jinnianshilongnian-2028675

    https://blog.csdn.net/qq_38526573/article/details/86661114

    https://blog.csdn.net/ljxbbss/article/details/77771001

  • 相关阅读:
    SNMP简介
    命令模式
    牛顿法
    仿射函数
    schedule
    命令模式
    牛顿法
    schedule
    仿射函数
    适配器模式
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302473.html
Copyright © 2020-2023  润新知