jwt Cookie 无密码解码方式
pom 依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.3.0</version>
</dependency>
原本使用base64 解码中间段,但是发现部分Cookie的中间段无法直接使用base64直接界面,会报错 。遂改为一下方式。
public static SecUser getLoginUser() {
SecUser secUser = new SecUser();
HttpServletRequest request = getHttpServletRequest();
if(request==null){
return secUser;
}
Cookie[] cookies = request.getCookies();
if(cookies==null){
return secUser;
}
for(Cookie cookie:cookies){
if("SUNWAY_JWT".equals(cookie.getName())&&StringUtils.isNotEmpty(cookie.getValue())){
String value = cookie.getValue();
try {
DecodedJWT jwt = JWT.decode(value);
String aud = jwt.getClaim("aud").asString();
String[] split1 = aud.split("@");
if(split1.length>2){
secUser.setUserId(split1[0]);
secUser.setUserName(split1[split1.length-1]);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
return secUser;
}