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 68299da59bb7ff6cfcadfa11c3767389abb82622..d022b0b5737d8347f60dbc973f88fd4672fa7c5d 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 0000000000000000000000000000000000000000..d4cfccd1d6091dccf7b0bf7005bfec04475f28c1 --- /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 c42f0f6293a6a19408f7d7a083c6090067e314d4..7fd093e2e205ee8e9ff502e6d1485e9f4a86dd0f 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 a8dede04a635ead4e78e860b5642996a00753d85..ce94d0d453869cc65cb3204e13d4232e8eb820a0 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:

+