一、前言

  本文: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失效时执行的方法
  例子:

 public class OnlineUserListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent event){
// session创建后
HttpSession session=event.getSession;
// 有了 session后,巴拉巴拉巴拉一顿操作。
} public void sessionDestroyed(HttpSessionEvent event){
// session 立马销毁前
HttpSession session=event.getSession;
// 有了 session后,巴拉巴拉巴拉一顿操作。
}
}
}

四、后言

  然后就可以胡作非为了。

  2019-02-11 14:14:48

最新文章

  1. 微信小程序(应用号)开发体验
  2. Java/Android引用类型及其使用分析
  3. ThinkPHP函数详解:I方法
  4. css 权威指南笔记( 六)-基本视觉格式化
  5. Web API零碎知识
  6. 腾讯測试project师笔试面试记录
  7. ansible学习之路
  8. 微信小程序入门(一)
  9. Python 直接赋值、浅拷贝和深度拷贝全解析
  10. ThinkPHP删除栏目(单)
  11. DRF 商城项目 - 用户操作(收藏, 留言, 收货地址)
  12. python用类实现xrange
  13. 前端入门17-JavaScript进阶之作用域
  14. Angular2+实现右键菜单的重定义--contextmenu
  15. cuda 配置要点
  16. java表达式中运算符优先级
  17. 启动tomcat报错Status 状态为 Deployment failed
  18. Android 项目的代码混淆,Android proguard 使用说明
  19. Appium 自动化测试(3)--Appium框架与流程介绍
  20. 使用UNetbootin制作U盘启动

热门文章

  1. Web前端-Vue.js必备框架(四)
  2. [Swift]LeetCode46. 全排列 | Permutations
  3. [Swift]LeetCode387. 字符串中的第一个唯一字符 | First Unique Character in a String
  4. ubuntu16.04安装lnmp环境
  5. win10安装ubuntu16.04及后续配置
  6. Python内置函数(61)——str
  7. 程序导致IIS服务器应用程序池停止
  8. 【朝花夕拾】Android编码风格篇
  9. 【c#】RabbitMQ学习文档(七)C# API
  10. 环境与工具1:微信群刷屏 | itchat