没有合适的资源?快使用搜索试试~ 我知道了~
首页SpringSecurity退出功能实现的正确方式(推荐)
SpringSecurity退出功能实现的正确方式(推荐)
1.4k 浏览量
更新于2023-05-29
评论
收藏 68KB PDF 举报
本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。本文通过实例代码讲解的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
资源详情
资源评论
资源推荐

SpringSecurity退出功能实现的正确方式退出功能实现的正确方式(推荐推荐)
本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。本文通过实例代码讲解的非常详细,
具有一定的参考借鉴价值,需要的朋友参考下吧
spring security 简介简介
spring security 的核心功能主要包括:
认证 (你是谁)
授权 (你能干什么)
攻击防护 (防止伪造身份)
其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一
个在spring security中一种过滤器处理一种认证方式。
本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。其实这是一个非常简单的功能,我见过很多的程序
员在使用了Spring Security之后,仍然去自己写controller方法实现logout功能,这种做法就好像耕地,你有机械设备你不用,
你非要用牛。
一、一、logout最简及最佳实践最简及最佳实践
其实使用Spring Security进行logout非常简单,只需要在spring Security配置类配置项上加上这样一行代码:http.logout()。关于
spring Security配置类的其他很多实现、如:HttpBasic模式、formLogin模式、自定义登录验证结果、使用权限表达式、
session会话管理,在本号的之前的文章已经都写过了。本节的核心内容就是在原有配置的基础上,加上这样一行代
码:http.logout()。
@Configuration
@EnableWebSecurity
public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.logout();
}
}
加上logout配置之后,在你的“退出”按钮上使用/logtou作为请求登出的路径。
<a href="/logout" rel="external nofollow" >退出</a>
logout功能我们就完成了。实际上的核心代码只有两行。
二、默认的二、默认的logout做了什么?做了什么?
虽然我们简简单单的实现了logout功能,是不是还不足够放心?我们下面就来看一下Spring Security默认在logout过程中帮我
们做了哪些动作。
当前session失效,即:logout的核心需求,session失效就是访问权限的回收。
删除当前用户的 remember-me“记住我”功能信息
clear清除当前的 SecurityContext
重定向到登录页面,loginPage配置项指定的页面
通常对于一个应用来讲,以上动作就是logout功能所需要具备的功能了。
三、个性化配置三、个性化配置
虽然Spring Security默认使用了/logout作为退出处理请求路径,登录页面作为退出之后的跳转页面。这符合绝大多数的应用的
开发逻辑,但有的时候我们需要一些个性化设置,如下:
http.logout()
.logoutUrl("/signout")
.logoutSuccessUrl("/aftersignout.html")
.deleteCookies("JSESSIONID")
通过指定logoutUrl配置改变退出请求的默认路径,当然html退出按钮的请求url也要修改
通过指定logoutSuccessUrl配置,来显式指定退出之后的跳转页面
还可以使用deleteCookies删除指定的cookie,参数为cookie的名称
四、四、LogoutSuccessHandler
如果上面的个性化配置,仍然满足不了您的应用需求。可能您的应用需要在logout的时候,做一些特殊动作,比如登录时长计



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0