Skip to content

Commit dca55b4

Browse files
author
zhult13
committed
用户信息赋值 context 对象
1 parent 53ead26 commit dca55b4

File tree

1 file changed

+35
-3
lines changed
  • zlt-commons/zlt-auth-client-spring-boot-starter/src/main/java/com/central/oauth2/common/util

1 file changed

+35
-3
lines changed

zlt-commons/zlt-auth-client-spring-boot-starter/src/main/java/com/central/oauth2/common/util/AuthUtils.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import com.central.common.constant.CommonConstant;
44
import com.central.common.constant.SecurityConstants;
5+
import com.central.common.context.LoginUserContextHolder;
56
import com.central.common.model.SysUser;
67
import com.central.common.utils.SpringUtil;
78
import com.central.oauth2.common.token.CustomWebAuthenticationDetails;
89
import lombok.extern.slf4j.Slf4j;
10+
import org.springframework.security.authentication.AnonymousAuthenticationToken;
911
import org.springframework.security.core.Authentication;
12+
import org.springframework.security.core.context.SecurityContextHolder;
1013
import org.springframework.security.oauth2.common.OAuth2AccessToken;
1114
import org.springframework.security.oauth2.common.exceptions.InvalidTokenException;
1215
import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException;
@@ -22,6 +25,9 @@
2225
*
2326
* @author zlt
2427
* @date 2018/5/13
28+
* <p>
29+
* Blog: https://zlt2000.gitee.io
30+
* Github: https://github.com/zlt2000
2531
*/
2632
@Slf4j
2733
public class AuthUtils {
@@ -71,12 +77,12 @@ private static String extractHeaderToken(HttpServletRequest request) {
7177
/**
7278
* 校验accessToken
7379
*/
74-
public static void checkAccessToken(HttpServletRequest request) {
80+
public static SysUser checkAccessToken(HttpServletRequest request) {
7581
String accessToken = extractToken(request);
76-
checkAccessToken(accessToken);
82+
return checkAccessToken(accessToken);
7783
}
7884

79-
public static void checkAccessToken(String accessTokenValue) {
85+
public static SysUser checkAccessToken(String accessTokenValue) {
8086
TokenStore tokenStore = SpringUtil.getBean(TokenStore.class);
8187
OAuth2AccessToken accessToken = tokenStore.readAccessToken(accessTokenValue);
8288
if (accessToken == null || accessToken.getValue() == null) {
@@ -89,6 +95,17 @@ public static void checkAccessToken(String accessTokenValue) {
8995
if (result == null) {
9096
throw new InvalidTokenException("Invalid access token: " + accessTokenValue);
9197
}
98+
return setContext(result);
99+
}
100+
101+
/**
102+
* 用户信息赋值 context 对象
103+
*/
104+
public static SysUser setContext(Authentication authentication) {
105+
SecurityContextHolder.getContext().setAuthentication(authentication);
106+
SysUser user = getUser(authentication);
107+
LoginUserContextHolder.setUser(user);
108+
return user;
92109
}
93110

94111
/**
@@ -132,6 +149,21 @@ public static String getUsername(Authentication authentication) {
132149
return username;
133150
}
134151

152+
/**
153+
* 获取登陆的用户对象
154+
*/
155+
public static SysUser getUser(Authentication authentication) {
156+
SysUser user = null;
157+
if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)) {
158+
Object principal = authentication.getPrincipal();
159+
//客户端模式只返回一个clientId
160+
if (principal instanceof SysUser) {
161+
user = (SysUser)principal;
162+
}
163+
}
164+
return user;
165+
}
166+
135167
/**
136168
* 获取登陆的帐户类型
137169
*/

0 commit comments

Comments
 (0)