SpringSecurity 退出登录

退出登录

Spring Security默认的退出登录URL为/logout,退出登录后,Spring Security会做如下处理:

  1. 是当前的Sesion失效;
  2. 清除与当前用户关联的RememberMe记录;
  3. 清空当前的SecurityContext;
  4. 重定向到登录页。

Spring Security允许我们通过配置来更改上面这些默认行为。

我们在Spring Security配置中添加如下配置:

......
.and()
    .logout()
    .logoutUrl("/logout")
    .logoutSuccessUrl("/logout/success")
    .deleteCookies("JSESSIONID")
.and()
......

放开拦截:

                .antMatchers("/authentication/require",
                        "/login.html",
                        "/code/image",
                        "/code/sms",
                        "/session/invalid",
                        "/logout/success").permitAll() // 无需认证的请求路径
                .anyRequest()  // 所有请求
                .authenticated() // 都需要认证
@GetMapping("/logout/success")
public String signout() {
    return "退出成功,请重新登录";
}

除了指定logoutUrl外,我们也可以通过logoutSuccessHandler指定退出成功处理器来处理退出成功后的逻辑:

MyLogOutSuccessHandler实现LogoutSuccessHandler

@Component
public class MyLogOutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
        httpServletResponse.setStatus(HttpStatus.UNAUTHORIZED.value());
        httpServletResponse.setContentType("application/json;charset=utf-8");
        httpServletResponse.getWriter().write("退出成功,请重新登录");
    }
}
@Autowired
private MyLogOutSuccessHandler logOutSuccessHandler;

......
.and()
    .logout()
    .logoutUrl("/signout")
    // .logoutSuccessUrl("/signout/success")
    .logoutSuccessHandler(logOutSuccessHandler)
    .deleteCookies("JSESSIONID")
.and()
......
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值