手赚入口:http://szjx.top
HttpSessionEventPublisher
实现了HttpSessionListener接口,监听session的创建和销毁事件,通过ApplicationContext发布对应的事件HttpSessionCreatedEvent HttpSessionDestroyedEvent //监听session创建事件 public void sessionCreated(HttpSessionEvent event) { HttpSessionCreatedEvent e = new HttpSessionCreatedEvent(event.getSession()); //发布事件 getContext(event.getSession().getServletContext()).publishEvent(e); } //监听session销毁事件 public void sessionDestroyed(HttpSessionEvent event) { HttpSessionDestroyedEvent e = new HttpSessionDestroyedEvent(event.getSession()); //发布事件 getContext(event.getSession().getServletContext()).publishEvent(e); }
SessionRegistry , SessionInformation
SessionInformation :记录认证用户的session信息 。
lastRequest:最后一次访问次数
principal:认证用户信息
sessionId:session的id
expired:是否过期
SessionRegistry :
保存了所有认证成功后用户的SessionInformation信息,每次用户访问服务器的会从sessionRegistry中查询出当前用户的session信息 ,判断是否过期以及刷新最后一次方法时间,默认的实现类SessionRegistryImpl,监听了session的销毁事件,若销毁,那么删除掉session信息,有两个属性:
/** <principal:Object,SessionIdSet> 以认证用户对象做key,多个sessionId 为value 。一个用户可以对应多个不同的session,表示同一个帐号可以同时在不同的浏览器上登录,可以配置最大允许同时登录的数*/ private final ConcurrentMap<Object,Set<String>> principals = new ConcurrentHashMap<Object,Set<String>>(); /** <sessionId:Object,SessionInformation> 以sessionid为key SessionInformation为value */ private final Map<String, SessionInformation> sessionIds = new ConcurrentHashMap<String, SessionInformation>();
SessionAuthenticationStrategy
void onAuthentication(Authentication authentication, HttpServletRequest request, HttpServletResponse response) throws SessionAuthenticationException;
有多个实现类:
ChangeSessionIdAuthenticationStrategy:
调用HttpServletRequest的changeSessionId方法改变sessionid
SessionFixationProtectionStrategy:
首先让原来的session过期,然后创建一个新的session,把原来session的属性拷贝到新的session中
http://xpenxpen.iteye.com/blog/1664075
RegisterSessionAuthenticationStrategy:
用户认证成功后sessionRegistry调用registerNewSession,保存用户的信息和session
ConcurrentSessionControlAuthenticationStrategy:
允许用户同时在线数,有一个maximumSessions属性,默认是1。通过sessionRegistry判断用户数是否已经超过了最大允许数,若超过了,那么就让最近一个的session过期(让上一个用户强制下线)
CompositeSessionAuthenticationStrategy:组合使用多个SessionAuthenticationStrategy
实现控制同时在线用户数
1. 在web.xml中添加listener
<listener> <listener-class> org.springframework.security.web.session.HttpSessionEventPublisher </listener-class> </listener>
2. 在security.xml中添加代码:
<security:http> <security:intercept-url pattern="/**" access="ROLE_USER"/> <security:form-login/> <security:logout logout-url="/logout"/> <security:session-management> <security:concurrency-control max-sessions="1"/> </security:session-management> </security:http>
默认创建的SessionAuthenticationStrategy是组合CompositeSessionAuthenticationStrategy:设置的SessionAuthenticationStrategy有:RegisterSessionAuthenticationStrategy ConcurrentSessionControlAuthenticationStrategy SessionFixationProtectionStrategy
小忆智库:http://blog.xiaoyizhiku.cn/
相关推荐
- 在Spring Security的XML配置文件中,`<http>`元素下的`<session-management>`用于配置会话管理。例如,可以添加`<concurrency-control>`子元素来设置并发会话策略。 - `<session-management>`还可以配置`...
在WebGoat的"Session Management Flaws"练习中,展示了如何通过分析和篡改WEAKID参数(一个代表Session ID的变量)来尝试模拟会话劫持。攻击者发现WEAKID的生成规律,尝试通过自动化工具(如Sequencer)模拟这个过程...
**Session Management** 在DFC编程中扮演着至关重要的角色,主要负责管理与Documentum服务器之间的会话。本文档旨在为DFC初学者提供关于如何高效地管理和利用这些会话的指南。 #### 二、DFC Session Management的...
* 会话管理Session Management Function (SMF) * 用户面功能User plane Function (UPF) * 能力开放:Network Exposure Function (NEF) * 功能注册:NF Repository Function (NRF) 4. 基于服务的控制面架构(SBA) ...
Angular 会话管理安装###Bower 安装 SessionManagement 模块的最简单方法是将 bower 包包含到您的解决方案中bower install symanto-angular-sessionmanagement --save 之后,您只需要将模块和所需的模块添加到您的 ...
4. **会话管理(Session Management)**: Shiro 不仅可以管理应用程序内部的会话,还可以跨服务器进行分布式会话管理。这在开发分布式 Web 应用时尤其有用,如在集群环境中,可以确保用户会话的一致性。Shiro 提供...
根据给定文件的信息,我们可以提炼出关于5G核心网NEF服务标准规范中与会话管理事件曝光服务相关的知识点。 ### 一、文档背景及概述 #### 1.1 文档基本信息 - **文档编号**:3GPPTS29.508V16.0.0(2019-06) - **...
从文档的【部分内容】来看,技术规范详细地介绍了5G会话管理服务(Session Management, SM)相关的服务、操作和流程,其中包括了用户平面连接的激活和取消激活,PDU会话的建立、更新、释放,以及移动性管理等核心...
3. **会话管理(Session Management)**: 会话管理是指在应用程序中跟踪用户状态和行为的过程,通常包括登录状态、用户偏好和数据缓存等。简单Session管理库的目标就是简化这一过程,提供一个封装好的接口来创建、...
诊所会议管理 构建设置 # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minification npm run build # build for production and view ...
Flask-Login provides user session management for Flask. It handles the common tasks of logging in, logging out, and remembering your users' sessions over extended periods of time. Flask-Login is not ...
在UE发起PDU会话建立请求时,如果在NAS(Non-Access Stratum)消息中没有提供DNN,AMF(Access and Mobility Management Function)将根据UE的签约信息来确定PDU会话的DNN。如果签约信息中存在默认DNN,AMF会选择这...
会话管理 该类用于维护和管理网站的会话。 通过本课程,您可以: 开始会话。 重新生成会话 ID。 检查会话是否有效。 关闭会话。 在这个类中,可以使用用户的指纹来验证会话。 指纹包括安全词、IP 地址、浏览器...
在Web应用开发中,会话管理(Session Management)是一项基本且重要的功能。它用于跟踪用户的会话状态,确保用户在与服务器交互过程中保持登录等状态信息的一致性。Session作为会话管理的一种实现方式,在现代Web...
"Session Management for Emacs"是一个开源项目,旨在帮助用户轻松地管理和恢复Emacs的工作会话。这个插件的核心功能是记录并恢复编辑器的多个方面,包括打开的文件、缓冲区、窗口布局,甚至用户的输入历史记录。...
Shiro框架的核心组件包括Subject(主体)、Realms(领域)、Cryptography(加密)和Session Management(会话管理)。Subject代表当前操作的用户,而Realms是Shiro与应用程序安全数据交互的桥梁,负责从数据源获取...
在IT行业中,尤其是在Web应用开发领域,服务器集群和会话管理是常见的需求。"适配与Tomcat7、8、9的redis session共享jar包"指的是一个专为Apache Tomcat服务器设计的解决方案,用于在多台Tomcat服务器之间共享用户...
在GPRS点对点数据业务中,SM(Session Management)主要包括PDP上下文的激活、解除和修改。对于匿名接入,也有相应的PDP上下文激活和解除流程。 PDP上下文的状态反映了其是否可用于数据传输。未激活状态意味着没有...