Spring Boot整合Security系列步骤及问题排查(十四)—— Session管理及退出

本文详述了在Spring Boot中整合Spring Security进行Session管理的实践,包括设置过期时间、多端登录管理和退出操作。退出时,不仅使当前Session失效,清除remember-me记录,还清空SecurityContext,并重定向到登录页面。同时,通过实现LogoutSuccessHandler、InvalidSessionStrategy和SessionInformationExpiredStrategy接口,自定义了退出和会话过期的处理逻辑。在配置中,增加了Session属性配置和登录成功页面的退出链接,最后介绍了问题排查的要点。
摘要由CSDN通过智能技术生成

过期管理

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</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值