【转载】spring-security-oauth2(十六 ) 退出登录

退出登陆

  1. 如何退出登录
  2. security默认退出登录处理逻辑
  3. 自定义退出登录

默认是/logout退出登录。

security默认退出登录处理逻辑

  • 使当前session失效
  • 清除与当前用户相关的remember-me记录
  • 清空当前的SecurityContext
  • 重定向到登录页

自定义退出登录

com.rui.tiger.auth.browser.config.BrowserSecurityConfig#configure

.expiredSessionStrategy(sessionInformationExpiredStrategy)//并发策略
.and()
.and()
.logout()
.logoutUrl("/loginOut") //默认logout
//.logoutSuccessUrl("") url和Handler只能配置一个
.logoutSuccessHandler(tigerLogoutSuccessHandler)
.deleteCookies("JSESSIONID")//清楚cook键值

自定义失败处理器


 
 
  1. package com.rui.tiger.auth.browser.loginout;
  2. import com.alibaba.fastjson.JSON;
  3. import com.rui.tiger.auth.core.properties.BrowserProperties;
  4. import com.rui.tiger.auth.core.properties.SecurityProperties;
  5. import com.rui.tiger.auth.core.support.SimpleResponse;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.springframework.security.core.Authentication;
  8. import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import java.io.IOException;
  13. /**
  14. * 退出登录处理Handler
  15. *
  16. * @author CaiRui
  17. * @date 2019-03-12 08:31
  18. */
  19. public class TigerLogoutSuccessHandler implements LogoutSuccessHandler {
  20. private SecurityProperties securityProperties;
  21. public TigerLogoutSuccessHandler(SecurityProperties securityProperties) {
  22. this.securityProperties = securityProperties;
  23. }
  24. @Override
  25. public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
  26. String loginOutUrl = securityProperties.getBrowser().getLoginOut();
  27. if (StringUtils.isBlank(loginOutUrl)) {
  28. response.setContentType( "application/json;charset=UTF-8");
  29. response.getWriter().write(JSON.toJSONString( new SimpleResponse( "退出成功")));
  30. } else {
  31. response.sendRedirect(loginOutUrl);
  32. }
  33. }
  34. }

bean可配置


 
 
  1. package com.rui.tiger.auth.browser.config;
  2. import com.rui.tiger.auth.browser.loginout.TigerLogoutSuccessHandler;
  3. import com.rui.tiger.auth.browser.session.TigerExpiredSessionStrategy;
  4. import com.rui.tiger.auth.browser.session.TigerInvalidSessionStrategy;
  5. import com.rui.tiger.auth.core.properties.SecurityProperties;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
  11. import org.springframework.security.web.session.InvalidSessionStrategy;
  12. import org.springframework.security.web.session.SessionInformationExpiredStrategy;
  13. /**
  14. * 失效默认实现
  15. * 自定义重写可以覆盖此实现
  16. * @author CaiRui
  17. * @date 2019-02-27 12:15
  18. */
  19. @Configuration
  20. public class BrowserSecurityBeanConfig {
  21. @Autowired
  22. private SecurityProperties securityProperties;
  23. @Bean
  24. @ConditionalOnMissingBean(InvalidSessionStrategy.class)
  25. public InvalidSessionStrategy invalidSessionStrategy(){
  26. return new TigerInvalidSessionStrategy(securityProperties.getBrowser().getSession().getInvalidSessionUrl());
  27. }
  28. @Bean
  29. @ConditionalOnMissingBean(SessionInformationExpiredStrategy.class)
  30. public SessionInformationExpiredStrategy sessionInformationExpiredStrategy(){
  31. return new TigerExpiredSessionStrategy(securityProperties.getBrowser().getSession().getInvalidSessionUrl());
  32. }
  33. //退出
  34. @Bean
  35. @ConditionalOnMissingBean(LogoutSuccessHandler.class)
  36. public LogoutSuccessHandler tigerLogoutSuccessHandler(){
  37. return new TigerLogoutSuccessHandler(securityProperties);
  38. }
  39. }

退出项可配置

 ok 我们在首页界面添加个退出测下


 
 
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页 </title>
  6. </head>
  7. <body>
  8. <h2>你好 </h2>
  9. <h3>欢迎你 </h3>
  10. <a href="/loginOut">退出登录 </a>
  11. </body>
  12. </html>

 

文章转载至:https://blog.csdn.net/ahcr1026212/article/details/88418239

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值