springboot整合springsecurity之自定义退出(代码片段)

健康平安的活着 健康平安的活着     2022-12-21     365

关键词:

一 security默认的退出

Spring security 默认实现了 logout 退出,访问 /logout:

 实现逻辑:

点击 “Log Out” 退出 成功。
退出 后访问其它 url 判断是否成功退出。

二 自定义退出

2.1 配置文件中配置

WebSecurityConfifig protected void confifigure(HttpSecurity http) 中配置:
.and() .logout() .logoutUrl("/logout") .logoutSuccessUrl("/login‐view?logout");

 2.2 测试

 

 

输入退出地址:

 

 

退出之后,跳转到session失效的url制定的页面

 

将session失效的跳转路径注释掉:

 重新登录访问,退出测试:

 

 

 退出到登录界面:

可以看到:如果设置了session失效跳转路径,退出登录后,还要执行session失效跳转的路径。 

当退出操作出发时,将发生:
使HTTP Session 无效
清除 SecurityContextHolder
跳转到 /login-view?logout
如果设置了session失效路径,则跳转到session失效的路径

 2.3 自定退出的更丰富功能

@Override
protected void configure ( HttpSecurity http ) throws Exception
http
. authorizeRequests ()
//...
. and ()
. logout () ( 1 )
. logoutUrl ( "/logout" ) ( 2 )
. logoutSuccessUrl ( "/login‐view?logout" ) ( 3 )
. logoutSuccessHandler ( logoutSuccessHandler ) ( 4 )
. addLogoutHandler ( logoutHandler ) ( 5 )
. invalidateHttpSession ( true ); ( 6 )
1 )提供系统退出支持, 使用 WebSecurityConfigurerAdapter 会自动被应用
2 )设置触发退出操作的URL (默认是 /logout ).
3 退出之后跳转的 URL。默认是 /login?logout
4 定制的 LogoutSuccessHandler ,用于实现用户退出成功时的处理。如果指定了这个选项那么 logoutSuccessUrl() 的设置会被忽略。
5 添加一个 LogoutHandler ,用于实现用户退出时的清理工作.默认 SecurityContextLogoutHandler 会被添加 为最后一个 LogoutHandler 。
6 )指定是否在退 出时让 HttpSession 无效。 默认设置为 true。
注意:如果让 logout GET 请求下生效,必须关闭防止 CSRF 攻击 csrf().disable() 。如果开启了 CSRF ,必须使用 post 方式请求 /logout
logoutHandler
一般来说, LogoutHandler 的实现类被用来执行必要的清理,因而他们不应该抛出异常。
下面是 Spring Security 提供的一些实现:
PersistentTokenBasedRememberMeServices 基于持久化token的RememberMe功能的相关清理
TokenBasedRememberMeService 基于token的RememberMe功能的相关清理
CookieClearingLogoutHandler 退出时Cookie的相关清理
CsrfLogoutHandler 责在退出时移除csrfToken
SecurityContextLogoutHandler 退出时SecurityContext的相关清理

 

springboot整合其他框架--springboot整合mybatis(代码片段)

1.SpringBoot整合Mybatis需求:SpringBoot整合MyBatis。实现步骤:搭建SpringBoot工程引入mybatis起步依赖,添加mysql驱动编写DataSource和MyBatis相关配置定义表和实体类编写dao和mapper文件/纯注解开发测试1.0公共步骤1.0.1搭建SpringBoot... 查看详情

springboot入门基础:介绍

一.SpringBoot初级(一)SpringBoot入门SpringBoot简介构件SpringBoot项目以及启动器讲解SpringBoot入门HelloWorld(二)SpringBoot整合Web开发整合Servlet整合Filter整合Listener访问静态资源文件上传(三)SpringBoot视图层技术整合jsp技术整合freemarker... 查看详情

springboot整合其他框架--springboot整合junit(代码片段)

1.SpringBoot整合Junit1.1实现步骤分析搭建SpringBoot工程引入starter-test起步依赖和junit依赖编写测试类添加测试相关注解@RunWith(SpringRunner.class)@SpringBootTest(classes=启动类.class)编写测试方法1.2搭建SpringBoot工程1.3导入相关依赖pom.xml... 查看详情

springboot整合其他框架--springboot整合redis(代码片段)

1.SpringBoot整合Redis搭建SpringBoot工程引入redis起步依赖配置redis相关属性注入RedisTemplate模板编写测试方法,测试1.1搭建SpringBoot工程1.2引入redis起步依赖<dependency><groupId>org.springframework.boot</groupId><arti 查看详情

springboot整合shiro(代码片段)

Springboot整合ShiroSpringboot整合Shiro的思路创建Springboot项目引入Shiro依赖配置Shiro环境Shiro常见过滤器Springboot整合Shiro的思路创建Springboot项目引入Shiro依赖<!--引入shiro整合springboot依赖--><dependency><groupId>org.apache. 查看详情

springboot:springboot整合logback和pagehelper

文章目录SpringBoot整合Logback和PageHelper一、整合Logback二、整合PageHelperSpringBoot整合Logback和PageHelper一、整合LogbackSpringBoot默认使用Logback组件作为日志管理。Logback是由log4j创始人设计的一个开源日志组件。在SpringBoot项目中我们不需要... 查看详情

springboot:springboot整合mybatis案例

文章目录SpringBoot整合Mybatis案例一、导入依赖二、编写配置文件三、编写功能代码 查看详情

1springboot整合之springboot整合jsp(代码片段)

SpringBoot整合JSP一、创建SpringBoot项目,仅选择Web模块即可二、在POM文件中添加依赖<!--添加servlet依赖模块--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId>< 查看详情

springboot整合mybatis-plus+durid数据库连接池(代码片段)

...用Eclipse可能操作会略有不同,不过总的来说不影响。springboot整合之如何选择版本及项目搭建springboot整合之版本号统一管理  springboot整合mybatis-plus+durid数据库连接池springboot整合swaggerspringboot整合mybatis代码快速生成springboo... 查看详情

springboot整合jsp

  这几天在集中学习Springboot+Shiro框架,因为之前view层用jsp比较多,所以想在springboot中配置jsp,但是springboot官方不推荐使用jsp,因为jsp相对于一些模板引擎,性能都比较低,官方推荐使用thymeleaf,但是Springboot整合jsp的过程已... 查看详情

(超详解)springboot初级部分-整合其他框架-04(代码片段)

文章目录SpringBoot-整合其他框架-041.SpringBoot整合Junit2.SpringBoot整合Redis3.SpringBoot整洁MyBatisSpringBoot-整合其他框架-04该文章参考:黑马SpringBoot1.SpringBoot整合Junit搭建SpringBoot工程引入starter-test起步依赖<dependency>< 查看详情

springboot整合mybatis

1、springboot配置数据库连接池druid2、springboot整合mybatis3、springboot整合pagehelper  springboot配置数据库连接池druid 新建springboot项目   相关pom依赖druid所需pom依赖 <dependency><groupId> 查看详情

springboot的其他整合相关

springBoot的事物管理1:springBoot整合单数据源事物:  springboot默认集成事物,只主要在方法上加上@Transactional即可 标签:@Transactional    2:springBoot整合多数据源分布式事物:使用springboot+jta+atomikos 分布... 查看详情

springboot整合shiro四:认证+授权

搭建环境见: SpringBoot整合Shiro一:搭建环境shiro配置类见: SpringBoot整合Shiro二:Shiro配置类shiro整合Mybatis见:SpringBoot整合Shiro三:整合Mybatis 认证未授权时ShiroConfig中添加授权访问  如果用户没有拥有user:add就无法访... 查看详情

基于springboot的完成mybatis整合(代码片段)

SpringBoot🍌掌握基于SpringBoot框架的程序开发步骤🍌使用SpringBoot配置信息修改服务器配置🍌SpringBoot完成SSM整合之SpringBoot整合junit今日目标:基于SpringBoot的完成mybatis整合一、SpringBoot整合mybatis1.1回顾Spring整合MybatisS... 查看详情

springboot.04.springboot整合mybatis

SpringBoot.04.SpringBoot整合MyBatis准备工作1.mapper模板2.t_user整合MyBatis1.新建Module2.pom.xml3.application.yml4.Springboot04MybatisApplication.java5.User.java6.UserMapper.java7.UserMapper.xml8.UserService9.User 查看详情

springboot2基于springboot实现ssmp整合(代码片段)

前言​    重头戏来了,SpringBoot之所以好用,就是它能方便快捷的整合其他技术,本文讲解一些技术的整合方式,通过这本文的学习,感受SpringBoot到底有多酷炫。本文学习如下技术的整合方式整合JUnit整... 查看详情

springboot学习笔记-整合mybatis

Springboot学习笔记(二)- 整合MyBatis SpringBoot中整合MyBatis,并通过注解方式实现映射。整合MyBatis以Springboot学习笔记(一)-Helloworld 为基础项目,在pom.xml中添加如下依赖 <dependency>  <groupId>org.mybatis.spring.b... 查看详情