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

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

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

1. 自定义退出登录行为

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

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

上面配置了退出登录的URL为/signout,退出成功后跳转的URL为/signout/success,退出成功后删除名称为JSESSIONID的cookie。

在Controller中添加和/signout/success对应的方法:

@GetMapping("/signout/success")
public String signout() {return "退出成功,请重新登录";
}

接着将/signout/success添加到免认证路径里。启动项目,登录后访问/signout

可看到退出成功,并且请求重定向到了/signout/success

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

@Autowired
private MyLogOutSuccessHandler logOutSuccessHandler;......
.and().logout().logoutUrl("/signout")// .logoutSuccessUrl("/signout/success").logoutSuccessHandler(logOutSuccessHandler).deleteCookies("JSESSIONID")
.and()
......

MyLogOutSuccessHandler实现LogoutSuccessHandler

@Component
public class MyLogOutSuccessHandler implements LogoutSuccessHandler {@Overridepublic 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("退出成功,请重新登录");}
}

效果和上面一样:

2. 源码地址

退出登录

Spring Security 退出登录(7)相关推荐

  1. 7.Spring Security 退出登录

    Spring Security默认的退出登录URL为/logout,退出登录后,Spring Security会做如下处理: 是当前的Sesion失效: 清除与当前用户关联的RememberMe记录: ...

  2. spring security+jwt 登录认证

    spring security+jwt 登录认证 1.综述 2.版本与环境 3.架构 4.数据库认证逻辑图 5.案例 security+jwt 5.1引入依赖 5.2新建工具类 5.2新建组件类 5. ...

  3. Spring Security自定义登录验证及登录返回结果

    Spring Security自定义登录验证及登录返回结果 一.功能描述 二.处理逻辑 简单流程 自定义UserDetails 自定义UserDetailsDAO 自定义UserDetailsServ ...

  4. (二)Spring Security自定义登录成功或失败处理器

    目录 一:创建登录成功处理器 二:创建登录失败处理器 三:添加处理器 三. 项目地址 我们接着上一章 Spring Security最简单的搭建,进行开发 LoginSuccessHandler 和L ...

  5. spring session 退出登录 清理session

    2019独角兽企业重金招聘Python工程师标准>>> spring session 退出登录 清理session 博客分类: spring /*** Allows creating ...

  6. Spring Security MVC登录注销示例教程

    Spring Security MVC登录注销示例教程 今天我们将了解Spring Security Login Example.在阅读这篇文章之前,请先阅读我在"Spring 4 Secu ...

  7. Spring Security:自定义登录页面

    本文来说下Spring Security中如何自定义登录页面 文章目录 准备工作 自定义登录界面 本文小结 准备工作 添加模板引擎 这里使用了thymeleaf模板引擎,在pom.xml进行添加: & ...

  8. Spring Security默认登录页面

    使用Spring Security作为权限管理模块的小伙伴们一定醉心于其极少的配置即可满足权限管理需求,以及比springMVC更简洁的filter配置. 在刚开始技术验证的demo阶段相信很多人试过 ...

  9. spring Security 重复登录配置无效的问题

    关于spring Security重复登录的配置,百度一大堆,我这里就不啰嗦了. 今天碰到 按照网上的配置,但是 感觉配置无效,同一用户还是可以登录,不知道为什么,开始以为是自己配置的又问题.再三确认 ...

最新文章

  1. 在Ubuntu Desktop 12.04 LTS从源代码运行ADempiere 3.6.0 LTS
  2. Sentinel 发布里程碑版本,添加集群流控功能
  3. OpenCV高级形态转换的实例(附完整代码)
  4. Linux系统检测工具 三(Free,Top,ps,Vmstat,Sysstat)
  5. 检测和语义分割_分割和对象检测-第1部分
  6. mysql item_MySQL源代码:关于MySQL的Item对象
  7. TypeError: ‘NoneType‘ object is not callable--python报错解决办法
  8. npm切换淘宝源,yarn切换淘宝源
  9. 文档级关系抽取方法,EMNLP 2020 paper
  10. html注册页面多选代码,利用HTML表单标签编写一个注册页面
  11. 6-3 There is No Free Lunch (40分)
  12. 数据挖掘与python实践心得体会_数据挖掘心得体会
  13. php laravel手册,【laravel7.x中文文档】集合
  14. lbj学习日记 06 一维数组和二维数组刷题课
  15. 豪沃轻abs12v电是什么系统_汽车中的ABS系统是什么意思?
  16. 亲测可用--word报错:子过程或函数未定义
  17. 2016版连接池和装饰设计模式保存记录
  18. matlab中插入希腊,matlab中希腊字母打法
  19. [linux] mv: cannot move $ to $: Directory not empty
  20. 微信小程序车牌组件代码

热门文章

  1. 可用在404 的几句诗词
  2. xlive.dll缺失怎么办
  3. echarts4.8.0最新版本下载,亲测可用
  4. oracle忽略版本,Oracle Stream忽略大事务 C001: large txn detected
  5. dbz-ui试用体验(connecting mysql...)
  6. seo和sem是什么意思
  7. ES6 新特性之 let, const : JavaScript在变量方面的改进。
  8. Object.entries()
  9. 逻辑右移、算术右移与循环逻辑右移
  10. 图片如何转换成PDF格式?教你一招快速转换