修改用户登录token不一致

master
bynt 2 years ago
parent a48b27c4f7
commit e0cdc2cb51

@ -180,23 +180,8 @@ public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
public TokenEnhancer tokenEnhancer() {
return (accessToken, authentication) -> {
if (accessToken instanceof DefaultOAuth2AccessToken) {
LoginUser user = (LoginUser) authentication.getUserAuthentication().getPrincipal();
// TODO: 2020/8/5 在token中后续添加权限信息
/*
*
*/
String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(","));
Map<String, Object> additionalInformation = new LinkedHashMap<>(16);
additionalInformation.put(SecurityConstants.DETAILS_USER_ID, user.getUser().getId());
additionalInformation.put(SecurityConstants.USER_ROLE_LIST, user.getRoles());
additionalInformation.put(SecurityConstants.DETAILS_USER, JSONUtil.toJsonStr(user.getUser()));
additionalInformation.put(SecurityConstants.DETAILS_USERNAME, user.getUser().getUsername());
additionalInformation.put(SecurityConstants.DATA_SCOPES, user.getDataScopes());
additionalInformation.put(SecurityConstants.AUTHORITIES_KEY, authorities);
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInformation);
onlineUserService.saveOnlineUser(accessToken);
SingleLoginTokenServices.setUser(authentication, (DefaultOAuth2AccessToken) accessToken);
// onlineUserService.saveOnlineUser(accessToken);
}
return accessToken;
};
@ -216,7 +201,7 @@ public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
}
private DefaultTokenServices createDefaultTokenServices() {
DefaultTokenServices tokenServices = new SingleLoginTokenServices(isSingleLogin);
DefaultTokenServices tokenServices = new SingleLoginTokenServices(isSingleLogin, onlineUserService);
tokenServices.setTokenStore(redisTokenStore());
// 支持刷新Token
tokenServices.setSupportRefreshToken(Boolean.TRUE);

@ -1,6 +1,11 @@
package com.baiye.config;
import cn.hutool.json.JSONUtil;
import com.baiye.component.LoginUser;
import com.baiye.constant.SecurityConstants;
import com.baiye.service.IOnlineUserService;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.common.*;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
@ -9,7 +14,10 @@ import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* DefaultTokenServices
@ -23,13 +31,20 @@ public class SingleLoginTokenServices extends DefaultTokenServices {
private TokenStore tokenStore;
private TokenEnhancer accessTokenEnhancer;
/**
*
*/
private boolean isSingleLogin;
public SingleLoginTokenServices(boolean isSingleLogin) {
/**
*
*/
private IOnlineUserService onlineUserService;
public SingleLoginTokenServices(boolean isSingleLogin,IOnlineUserService onlineUserService) {
this.isSingleLogin = isSingleLogin;
this.onlineUserService = onlineUserService;
}
@Override
@ -83,10 +98,27 @@ public class SingleLoginTokenServices extends DefaultTokenServices {
if (refreshToken != null) {
tokenStore.storeRefreshToken(refreshToken, authentication);
}
setUser(authentication, (DefaultOAuth2AccessToken) accessToken);
onlineUserService.saveOnlineUser(accessToken);
return accessToken;
}
static void setUser(OAuth2Authentication authentication, DefaultOAuth2AccessToken accessToken) {
LoginUser user = (LoginUser) authentication.getUserAuthentication().getPrincipal();
String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(","));
Map<String, Object> additionalInformation = new LinkedHashMap<>(16);
additionalInformation.put(SecurityConstants.DETAILS_USER_ID, user.getUser().getId());
additionalInformation.put(SecurityConstants.USER_ROLE_LIST, user.getRoles());
additionalInformation.put(SecurityConstants.DETAILS_USER, JSONUtil.toJsonStr(user.getUser()));
additionalInformation.put(SecurityConstants.DETAILS_USERNAME, user.getUser().getUsername());
additionalInformation.put(SecurityConstants.DATA_SCOPES, user.getDataScopes());
additionalInformation.put(SecurityConstants.AUTHORITIES_KEY, authorities);
accessToken.setAdditionalInformation(additionalInformation);
}
private OAuth2RefreshToken createRefreshToken(OAuth2Authentication authentication) {
if (!isSupportRefreshToken(authentication.getOAuth2Request())) {
return null;

Loading…
Cancel
Save