过期管理
1.直接在配置文件中配置:
server:
servlet:
session:
# 单位(s),默认30分钟,最少1分钟
timeout: 600
# session集群存储配置,如REDIS
# store-type: REDIS
多端登录管理和退出
退出处理:
使当前session失效
清除与当前用户相关的remember-me记录
清空当前的SecurityContext
重定向到登录页
2.更新WebSecurityConfig:
// session管理
@Autowired
private InvalidSessionStrategy invalidSessionStrategy;
@Autowired
private SessionInformationExpiredStrategy sessionInformationExpiredStrategy;
@Autowired
private LogoutSuccessHandler logoutSuccessHandler;
...
// session管理
.sessionManagement()
// 过期处理
.invalidSessionStrategy(invalidSessionStrategy)
// 同时在线数量
.maximumSessions(securityProperties.getBrowser().getSession().getMaximumSessions())
// 是否阻止登录
.maxSessionsPreventsLogin(securityProperties.getBrowser().getSession().isMaxSessionsPreventsLogin())
// 多端登录提示
.expiredSessionStrategy(sessionInformationExpiredStrategy)
.and()
.and()
// 退出
.logout()
// 触发退出操作的url
.logoutUrl("/signOut")
// .logoutSuccessUrl("demoLogout.html")
// 与logoutSuccessUrl只能调用其中一个
.logoutSuccessHandler(logoutSuccessHandler)
// 删除cookie
.deleteCookies("JSESSIONID")
.and()
// 对任何请求授权
.authorizeRequests()
// 匹配页面授权所有权限
.antMatchers(
// API
"/swagger-ui.html",
// 默认登录页
SecurityConstants.DEFAULT_UNAUTHENTICATION_URL,
// 自定义登录页(demoLogin)
securityProperties.getBrowser().getLoginPage(),
// 验证码
SecurityConstants.DEFAULT_VALIDATE_CODE_URL_PREFIX + "/*",
securityProperties.getBrowser().getSignUpPage(),
securityProperties.getBrowser().getSession().getSessionInvalidUrl(),
securityProperties.getBrowser().getLogoutPage(),
"/user/regist")
.permitAll()
实现LogoutSuccessHandler:
/**
* 默认的退出成功处理器,如果设置了demo.security.browser.getLogoutPage,则跳到配置的地址上,
* 如果没配置,则返回json格式的响应。
*
* @author zhaohaibin
*/
@Slf4j
public class DemoLogoutSuccessHandler implements</