• 【学习笔记】【Javaweb】二、Session对象过期时间三种设置方法、Session失效监听器


    一、前言

      本文:https://www.cnblogs.com/Twobox/p/10361712.html

      参考:https://www.cnblogs.com/diewufeixian/p/4221747.html

      自己设计SSO系统的时候,需要考虑多个客户网站与中心网站的Session有效期同步问题。

      即需要满足:

        客户端网站Session剩余失效时间必须短于中心网站。

        中心网站Session失效的时候,客户端网站必须全部声明失效。

      场景:

        用户第一次在中心网站登陆的时候会创建并刷新 中心网站 的Session过期时间。但随后就去访问子网站,后面可能就不会再访问中心网站。

        故:用户访问某子网站时,子网站通知中心网站刷新Session过期时间。

        

        子网站毕竟是别人的网站,中心网站无法保证子网站会及时通知自己刷新Session过期时间。所以也可能存在某子网站Session待过期时间长于中心网站。

        故:为了安全保证并瞒住上面两个要求。监听器监听中心网站某Session失效后,随后通知相关子网站强制声明Session失效。

    二、开始

      按照优先级,从小到大介绍:

      ① 在web容器中设置(以tomcat为例)

        

        tomcat/conf/web.xml 下 12%左右的位置。

        

        单位为分钟!!!

        tomcat默认session超时时间为30分钟,负数或0为不限制session失效时间。

       ② 在程的web.xml中设置

        

        单位为分钟!!!

        ③ 过java代码设置

        session.setMaxInactiveInterval(30*60);

        单位为 秒!!!!!!

        即在没有活动30分钟后,此session将失效。

      三种方式优先等级:1 < 2 < 3

    三、session监听器

      当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序就可以了。

      监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法
      自己可以继承这个类,然后分别实现
      sessionCreated指在session创建时执行的方法
      sessionDestroyed指在session失效时执行的方法
      例子:

     1 public class OnlineUserListener implements HttpSessionListener{
     2     public void sessionCreated(HttpSessionEvent event){
     3         // session创建后
     4         HttpSession session=event.getSession;
     5         // 有了 session后,巴拉巴拉巴拉一顿操作。
     6     }
     7     
     8     public void sessionDestroyed(HttpSessionEvent event){
     9         // session 立马销毁前
    10         HttpSession session=event.getSession;
    11         // 有了 session后,巴拉巴拉巴拉一顿操作。
    12         }
    13     }
    14 }

    四、后言

       然后就可以胡作非为了。

      2019-02-11 14:14:48

  • 相关阅读:
    从C#下使用WM_COPYDATA传输数据说到Marshal的应用
    关于C#中实现两个应用程序消息通讯的问题
    内核模块/lib/modules/2.6.2426server/build: No such file or directory. Stop.
    关于BUILD_BUG_ON
    __user && address_space(1)
    Linux Namespaces机制——实现
    inetsw_array的定义中有四个元素IPPROTO_TCP,IPPROTO_UDP,IPPROTO_ICMP,IPPROTO_IP
    需求调研中有效沟通系列如何确认需求?
    ITSM & ITIL QQ群 2月28日讨论 ITIL中什么最重要和优先级最高的聊天记录和总结
    .NET平台下开发HelpDesk(服务台)的广泛应用前景分析
  • 原文地址:https://www.cnblogs.com/Twobox/p/10361712.html
Copyright © 2020-2023  润新知