Skip to content

Commit 89f42d9

Browse files
committed
feat: 支持cookie中的token解析
1 parent a07f57a commit 89f42d9

3 files changed

Lines changed: 26 additions & 2 deletions

File tree

framework/src/main/java/top/cadecode/uniboot/framework/security/TokenAuthHolder.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package top.cadecode.uniboot.framework.security;
22

33
import cn.hutool.core.lang.UUID;
4+
import cn.hutool.core.util.ObjectUtil;
45
import cn.hutool.json.JSONObject;
56
import cn.hutool.jwt.JWT;
67
import lombok.Data;
78
import org.springframework.boot.context.properties.ConfigurationProperties;
89
import org.springframework.stereotype.Component;
910

11+
import javax.servlet.http.Cookie;
12+
import javax.servlet.http.HttpServletRequest;
13+
import java.util.Arrays;
1014
import java.util.Date;
1115
import java.util.List;
16+
import java.util.Optional;
1217

1318
/**
1419
* JWT Token 工具类(基于 hutool)
@@ -111,4 +116,23 @@ public String generateUUID() {
111116
// 使用两个 UUID 拼接
112117
return UUID.fastUUID().toString(true) + UUID.fastUUID().toString(true);
113118
}
119+
120+
/**
121+
* 从request对象解析token,cookie or header
122+
*
123+
* @param request HttpServletRequest
124+
* @return token
125+
*/
126+
public String getTokenFromRequest(HttpServletRequest request) {
127+
Cookie[] cookies = request.getCookies();
128+
if (ObjectUtil.isNotEmpty(cookies)) {
129+
Optional<Cookie> optionalCookie = Arrays.stream(cookies)
130+
.filter(c -> ObjectUtil.equal(c.getName(), getHeader()))
131+
.findAny();
132+
if (optionalCookie.isPresent()) {
133+
return optionalCookie.get().getValue();
134+
}
135+
}
136+
return request.getHeader(getHeader());
137+
}
114138
}

framework/src/main/java/top/cadecode/uniboot/framework/security/filter/JwtTokenAuthFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public AuthModelEnum getAuthModel() {
3838
@Override
3939
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
4040
String requestURI = request.getRequestURI();
41-
String jwtToken = request.getHeader(tokenAuthHolder.getHeader());
41+
String jwtToken = tokenAuthHolder.getTokenFromRequest(request);
4242
// token 不存在
4343
if (StrUtil.isEmpty(jwtToken)) {
4444
filterChain.doFilter(request, response);

framework/src/main/java/top/cadecode/uniboot/framework/security/filter/RedisTokenAuthFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public AuthModelEnum getAuthModel() {
4242
@Override
4343
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
4444
String requestURI = request.getRequestURI();
45-
String uuidToken = request.getHeader(tokenAuthHolder.getHeader());
45+
String uuidToken = tokenAuthHolder.getTokenFromRequest(request);
4646
// token 不存在
4747
if (StrUtil.isEmpty(uuidToken)) {
4848
filterChain.doFilter(request, response);

0 commit comments

Comments
 (0)