oauth2异地登录下线

2021-04-19  本文已影响0人  ExcellentYze

1、定位到默认的oauth2登录时的createAccessToken方法源码
包位置 org\springframework\security\oauth2\provider\token\DefaultTokenServices.class

      public OAuth2AccessToken createAccessToken(OAuth2Authentication authentication) throws AuthenticationException {
        OAuth2AccessToken existingAccessToken = this.tokenStore.getAccessToken(authentication);
        OAuth2RefreshToken refreshToken = null;
        if (existingAccessToken != null) {
                if (existingAccessToken.getRefreshToken() != null) {
                    refreshToken = existingAccessToken.getRefreshToken();
                    tokenStore.removeRefreshToken(refreshToken);
                }
                tokenStore.removeAccessToken(existingAccessToken);
        }
                   ...
}

2、重写上图所示代码方法,对redis中已存在的token直接删除,每次登录时都重新生成token,令旧的token失效从而达到踢用户下线的操作
3、具体操作:

 OAuth2AccessToken existingAccessToken = this.tokenStore.getAccessToken(authentication);
        OAuth2RefreshToken refreshToken = null;
        if (existingAccessToken != null) {
                if (existingAccessToken.getRefreshToken() != null) {
                    refreshToken = existingAccessToken.getRefreshToken();
                    tokenStore.removeRefreshToken(refreshToken);
                }
                tokenStore.removeAccessToken(existingAccessToken);
        }
上一篇 下一篇

猜你喜欢

热点阅读