时间:2021-05-20
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@EnableWebSecuritypublic 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过程中帮我们做了哪些动作。
通常对于一个应用来讲,以上动作就是logout功能所需要具备的功能了。
三、个性化配置
虽然Spring Security默认使用了/logout作为退出处理请求路径,登录页面作为退出之后的跳转页面。这符合绝大多数的应用的开发逻辑,但有的时候我们需要一些个性化设置,如下:
http.logout() .logoutUrl("/signout") .logoutSuccessUrl("/aftersignout.html") .deleteCookies("JSESSIONID")四、LogoutSuccessHandler
如果上面的个性化配置,仍然满足不了您的应用需求。可能您的应用需要在logout的时候,做一些特殊动作,比如登录时长计算,清理业务相关的数据等等。你可以通过实现LogoutSuccessHandler 接口来实现你的业务逻辑。
@Componentpublic class MyLogoutSuccessHandler implements LogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { //这里书写你自己的退出业务逻辑 // 重定向到登录页 response.sendRedirect("/login.html"); }}然后进行配置使其生效,核心代码就是一行logoutSuccessHandler。注意logoutSuccessUrl不要与logoutSuccessHandler一起使用,否则logoutSuccessHandler将失效。
@Configuration@EnableWebSecuritypublic class SecSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private MyLogoutSuccessHandler myLogoutSuccessHandler; @Override protected void configure(final HttpSecurity http) throws Exception { http.logout() .logoutUrl("/signout") //.logoutSuccessUrl(``"/aftersignout.html"``) .deleteCookies("JSESSIONID") //自定义logoutSuccessHandler .logoutSuccessHandler(myLogoutSuccessHandler); }}总结
以上所述是小编给大家介绍的SpringSecurity退出功能实现的正确方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java开发之springsecurity实现基于MongoDB的认证功能。分享给大家供大家参考,具体如下:springsecurity对基于数据
全文主题风格:淘宝网超级推荐账户余额怎么退出?如何正确实际操作目前提到淘宝网超级推荐,是在淘宝手机端热门推荐等详细介绍情景中交叉原生态方式信息内容的营销推广商品
1简介在之前的文章《Springboot集成SpringSecurity实现JWT认证》讲解了如何在传统的Web项目中整合SpringSecurity和JWT,
本文实例讲述了Yii框架实现的验证码、登录及退出功能。分享给大家供大家参考,具体如下:捣鼓了一下午,总算走通了,下面贴出代码。Model'请输入正确的验证码')
实现Android滑动退出Activity的功能android向右滑动,退出activity//右滑删除compile'com.jude:swipebackhe