spring security里面专门的一个模块session management
定义session监听器监听会话登录事件,再讲该session事件
交由spring security来处理,spring security本身提供了对这一事件处理的支持,包括
很多定义好的session策略来处理监听好的session事件
1.定义session监听器
在SecurityConfig配置类中注册(该类是继承了WebSecurityConfigurerAdapter类的 )
@Bean public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
2. 官方的源码里面这个关于HttpSessionEventPublisher里面的设置是禁用的,所以我们在启用HttpSessionEventPublisher 重写这个类
public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer {
@Override protected boolean enableHttpSessionEventPublisher() {
return true;
}
}
3. 在SecurityConfig类中
@Override protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().invalidSessionStrategy(invalidSessionStrategy);
}
4.实现 InvalidSessionStrategy 重写 onInvalidSessionDetected
@Component public class MyInvalidSessionStrategy implements InvalidSessionStrategy{
@Override public void onInvalidSessionDetected(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
system.out.println("会话失效,需要登录");
}
}