Spring Boot + OAuth2 + Google Login - 如何实现注销
Posted
技术标签:
【中文标题】Spring Boot + OAuth2 + Google Login - 如何实现注销【英文标题】:Spring Boot + OAuth2 + Google Login - How to implement logout 【发布时间】:2015-06-26 08:03:08 【问题描述】:我有一个使用 Spring Boot + OAuth2 + 通过 Google 登录的身份验证服务器实现。以及用于我的后端数据服务的资源服务器。我使用了 JDBC 令牌存储。一切都很好。但是我很难理解注销的实现。目前,每当用户单击注销时,我只是从浏览器本地存储中删除令牌,但会话在 Auth 服务器中保持活动状态,因此我不需要再次登录。我想要的是每当使用注销时点击我想使会话无效并强制他再次登录。
有什么好办法吗?我的 Spring Boot Auth 服务器配置中目前没有任何注销配置。
谢谢
【问题讨论】:
【参考方案1】:尝试注册一个 LogoutSuccessHandler 来做到这一点。大致如下:
@Configuration
@EnableWebSecurity
@EnableResourceServer
public class SecurityConfig extends ResourceServerConfigurerAdapter
@Bean
public DefaultTokenServices tokenServices()
return new DefaultTokenServices();
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception
resources.resourceId("myResourceId");
resources.tokenServices(tokenServices());
@Override
public void configure(HttpSecurity http) throws Exception
// configure http security here...
http.logout().logoutSuccessHandler(new SimpleUrlLogoutSuccessHandler()
@Override
public void onLogoutSuccess(HttpServletRequest request,
HttpServletResponse response,
Authentication authentication)
OAuth2AccessToken token = tokenServices().getAccessToken((OAuth2Authentication) authentication);
tokenServices().revokeToken(token.getValue());
);
【讨论】:
以上是关于Spring Boot + OAuth2 + Google Login - 如何实现注销的主要内容,如果未能解决你的问题,请参考以下文章
使用 spring-boot OAuth2 服务器保护的 Spring-boot 应用程序
让 oauth2 与 spring-boot 和 rest 一起工作
Spring Boot Restful WebAPI集成 OAuth2
Spring Boot + Spring Security + Spring OAuth2 + Google 登录