From 31e773c373b474d2020baf0e96362a3683087c8e Mon Sep 17 00:00:00 2001 From: zlt Date: Tue, 10 Mar 2020 23:34:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96sso-demo=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=99=BB=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sso/demo/config/SecurityConfig.java | 10 ++++- .../demo/config/SsoLogoutSuccessHandler.java | 39 +++++++++++++++++++ .../sso-demo/src/main/resources/bootstrap.yml | 1 + .../src/main/resources/templates/index.html | 12 +++--- 4 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java diff --git a/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SecurityConfig.java b/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SecurityConfig.java index 68299da..d022b0b 100644 --- a/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SecurityConfig.java +++ b/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SecurityConfig.java @@ -6,6 +6,9 @@ import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; + +import javax.annotation.Resource; /** * security配置 @@ -22,11 +25,16 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Value("${security.oauth2.sso.login-path:}") private String loginPath; + @Resource + private LogoutSuccessHandler ssoLogoutSuccessHandler; + @Override public void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().authenticated() .and() - .csrf().disable(); + .csrf().disable() + .logout() + .logoutSuccessHandler(ssoLogoutSuccessHandler); if (StrUtil.isNotEmpty(loginPath)) { http.formLogin().loginProcessingUrl(loginPath); } diff --git a/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java b/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java new file mode 100644 index 0000000..d4cfccd --- /dev/null +++ b/zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java @@ -0,0 +1,39 @@ +package com.sso.demo.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.Authentication; +import org.springframework.security.oauth2.provider.OAuth2Authentication; +import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; +import org.springframework.security.web.DefaultRedirectStrategy; +import org.springframework.security.web.RedirectStrategy; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 登出成功处理类 + * + * @author zlt + * @date 2020/3/10 + *

+ * Blog: https://blog.csdn.net/zlt2000 + * Github: https://github.com/zlt2000 + */ +@Component +public class SsoLogoutSuccessHandler implements LogoutSuccessHandler { + @Value("${zlt.logout-uri:''}") + private String logoutUri; + + private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy(); + + @Override + public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { + OAuth2Authentication oauth2Authentication = (OAuth2Authentication)authentication; + OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails)oauth2Authentication.getDetails(); + String accessToken = details.getTokenValue(); + redirectStrategy.sendRedirect(request, response, logoutUri+accessToken); + } +} diff --git a/zlt-demo/sso-demo/src/main/resources/bootstrap.yml b/zlt-demo/sso-demo/src/main/resources/bootstrap.yml index c42f0f6..7fd093e 100644 --- a/zlt-demo/sso-demo/src/main/resources/bootstrap.yml +++ b/zlt-demo/sso-demo/src/main/resources/bootstrap.yml @@ -8,6 +8,7 @@ spring: zlt: api-uaa: url: http://127.0.0.1:9900/api-uaa/oauth + logout-uri: ${zlt.api-uaa.url}/remove/token?redirectUri=http://127.0.0.1:8080&access_token= security: oauth2: diff --git a/zlt-demo/sso-demo/src/main/resources/templates/index.html b/zlt-demo/sso-demo/src/main/resources/templates/index.html index a8dede0..ce94d0d 100644 --- a/zlt-demo/sso-demo/src/main/resources/templates/index.html +++ b/zlt-demo/sso-demo/src/main/resources/templates/index.html @@ -6,13 +6,11 @@

- 登录者: -
- 权限: -
- 应用id: -
- token: +

登录者:

+

权限:

+

应用id:

+

token:

+

-- GitLab