当会话固定保护发生时,它会导致在应用程序上下文中发布
SessionFixationProtectionEvent 。如果您使用changeSessionId,此保护也将导致任何javax.servlet.http. httpessionidlistener被通知,所以如果您的代码侦听这两个事件,请谨慎使用 。
- SessionManagementFilter
SessionAuthenticationStrategy 。
如果用户当前没有经过身份验证,该过滤器将检查是否请求了一个无效的会话ID(例如,由于超时),并将调用配置的InvalidSessionStrategy(如果设置了一个) 。最常见的行为就是重定向到一个固定的URL,这被封装在标准实现
SimpleRedirectInvalidSessionStrategy中 。
- SessionAuthenticationStrategy
SessionAuthenticationStrategy被SessionManagementFilter和AbstractAuthenticationProcessingFilter使用,所以如果你使用一个定制的表单登录类,例如,你将需要将它注入到这两个类中 。在这种情况下,结合命名空间和自定义bean的典型配置可能是这样的:
<http><custom-filter position="FORM_LOGIN_FILTER" ref="myAuthFilter" /><session-management session-authentication-strategy-ref="sas"/></http><beans:bean id="myAuthFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"><beans:property name="sessionAuthenticationStrategy" ref="sas" />...</beans:bean><beans:bean id="sas" class="org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy" />
请注意,如果您将bean存储在实现httpessionbindinglistener的会话中(包括Spring会话范围内的bean),使用缺省的SessionFixationProtectionStrategy可能会导致问题 。有关这个类的更多信息,请参阅Javadoc 。
- Concurrency Control
命名空间支持并发控制,因此请检查前面的命名空间章节以获得最简单的配置 。但有时你需要定制一些东西 。
该实现使用了
SessionAuthenticationStrategy的一个特殊版本,称为ConcurrentSessionControlAuthenticationStrategy 。
以前,并发身份验证检查是由ProviderManager进行的,它可以被注入一个
ConcurrentSessionController 。后者将检查用户是否试图超过允许的会话数 。但是,这种方法要求预先创建HTTP会话,这是不可取的 。在Spring Security 3中,用户首先通过AuthenticationManager进行身份验证,一旦验证成功,将创建一个会话,并检查是否允许打开另一个会话 。
推荐阅读
- 严国华|《罚罪》唐绍文身份曝光,他确实是卧底,但并非听命于严国华
- 肖振邦|《罚罪》仅剩6集!肖振邦的结局注定悲惨,邱涛的真实身份即将暴露
- 浙江卫视|前浙江卫视主持人突然晒娃,曾和杨迪传绯闻,圈外丈夫仍身份成谜
- 李伯东|罚罪:李伯东真实身份曝光,与张秋峰联手上演碟中谍
- 章安仁|《流金岁月》,章安仁或许对蒋南孙有一丝喜欢,更爱的是她的身份
- 赵鹏超|《罚罪》最狠毒之人,为钱抛弃所有亲人,“大王”身份实至名归
- |探秘新钓点鱼影都没见到,却意外钩起一螃蟹,得知身份后高兴坏了
- 陆安然|覆流年:5000两买下的冬青身份不简单,陆安然既送了人情又得忠仆
- |40岁韩国男星染毒被逮!身份被网友找到了!
- 吴镇宇|吴镇宇:坐公交被指责不该坐老人座,无奈掏出身份证,引无限感慨