dev #6
|
@ -1,10 +1,13 @@
|
||||||
package cn.bunny.common.service.context;
|
package cn.bunny.common.service.context;
|
||||||
|
|
||||||
|
import cn.bunny.vo.system.login.LoginVo;
|
||||||
|
|
||||||
public class BaseContext {
|
public class BaseContext {
|
||||||
private static final ThreadLocal<Long> userId = new ThreadLocal<>();
|
private static final ThreadLocal<Long> userId = new ThreadLocal<>();
|
||||||
private static final ThreadLocal<String> username = new ThreadLocal<String>();
|
private static final ThreadLocal<String> username = new ThreadLocal<String>();
|
||||||
private static final ThreadLocal<Long> adminId = new ThreadLocal<>();
|
private static final ThreadLocal<Long> adminId = new ThreadLocal<>();
|
||||||
private static final ThreadLocal<String> adminName = new ThreadLocal<>();
|
private static final ThreadLocal<String> adminName = new ThreadLocal<>();
|
||||||
|
private static final ThreadLocal<LoginVo> loginVo = new ThreadLocal<>();
|
||||||
|
|
||||||
// 用户id相关
|
// 用户id相关
|
||||||
public static Long getUserId() {
|
public static Long getUserId() {
|
||||||
|
@ -23,9 +26,18 @@ public class BaseContext {
|
||||||
username.set(_username);
|
username.set(_username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LoginVo getLoginVo() {
|
||||||
|
return loginVo.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setLoginVo(LoginVo _loginVo) {
|
||||||
|
loginVo.set(_loginVo);
|
||||||
|
}
|
||||||
|
|
||||||
public static void removeUser() {
|
public static void removeUser() {
|
||||||
username.remove();
|
username.remove();
|
||||||
userId.remove();
|
userId.remove();
|
||||||
|
loginVo.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
// adminId 相关
|
// adminId 相关
|
||||||
|
|
|
@ -2,6 +2,8 @@ package cn.bunny.common.service.interceptor;
|
||||||
|
|
||||||
import cn.bunny.common.service.context.BaseContext;
|
import cn.bunny.common.service.context.BaseContext;
|
||||||
import cn.bunny.common.service.utils.JwtHelper;
|
import cn.bunny.common.service.utils.JwtHelper;
|
||||||
|
import cn.bunny.common.service.utils.ResponseUtil;
|
||||||
|
import cn.bunny.pojo.result.Result;
|
||||||
import cn.bunny.pojo.result.ResultCodeEnum;
|
import cn.bunny.pojo.result.ResultCodeEnum;
|
||||||
import cn.bunny.pojo.result.constant.RedisUserConstant;
|
import cn.bunny.pojo.result.constant.RedisUserConstant;
|
||||||
import cn.bunny.vo.system.login.LoginVo;
|
import cn.bunny.vo.system.login.LoginVo;
|
||||||
|
@ -18,51 +20,41 @@ import org.springframework.web.servlet.HandlerInterceptor;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static cn.bunny.common.service.utils.ResponseHandlerUtil.loginAuthHandler;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class UserTokenInterceptor implements HandlerInterceptor {
|
public class UserTokenInterceptor implements HandlerInterceptor {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisTemplate<String, Object> redisTemplate;
|
private RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||||
log.info("UserTokenInterceptor===>设置拦截器");
|
log.info("UserTokenInterceptor===>设置拦截器");
|
||||||
// 获取token
|
|
||||||
String token = request.getHeader("token");
|
String token = request.getHeader("token");
|
||||||
|
Map<String, Object> mapByToken = JwtHelper.getMapByToken(token);
|
||||||
// token为空时
|
LoginVo loginVo = JSONObject.parseObject(JSONObject.toJSONString(mapByToken), LoginVo.class);
|
||||||
if (token == null) {
|
Object redisUserinfo = redisTemplate.opsForValue().get(RedisUserConstant.getUserLoginInfoPrefix(loginVo.getEmail()));
|
||||||
return loginAuthHandler(response, ResultCodeEnum.LOGIN_AUTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当token过期
|
|
||||||
if (JwtHelper.isExpired(token)) {
|
|
||||||
return loginAuthHandler(response, ResultCodeEnum.AUTHENTICATION_EXPIRED);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 将token转成实体类
|
|
||||||
Map<String, Object> tokenByMap = JwtHelper.getMapByToken(token);
|
|
||||||
LoginVo loginVo = JSONObject.parseObject(JSONObject.toJSONString(tokenByMap), LoginVo.class);
|
|
||||||
|
|
||||||
// 获取用户id和用户邮箱
|
|
||||||
Long userId = loginVo.getId();
|
|
||||||
String email = loginVo.getEmail();
|
|
||||||
String redisKey = RedisUserConstant.getUserLoginInfoPrefix(email);
|
|
||||||
Object redisUserinfo = redisTemplate.opsForValue().get(redisKey);
|
|
||||||
|
|
||||||
// 不是动态方法直接返回
|
// 不是动态方法直接返回
|
||||||
if (!(handler instanceof HandlerMethod)) return true;
|
if (!(handler instanceof HandlerMethod)) return true;
|
||||||
|
|
||||||
// 解析不到userId,Redis中没有这个用户
|
// token过期-提示身份验证过期
|
||||||
if (userId == null || redisUserinfo == null) {
|
if (JwtHelper.isExpired(token)) {
|
||||||
return loginAuthHandler(response, ResultCodeEnum.LOGIN_AUTH);
|
ResponseUtil.out(response, Result.error(ResultCodeEnum.AUTHENTICATION_EXPIRED));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 解析不到userId
|
||||||
|
if (loginVo.getId() == null) {
|
||||||
|
ResponseUtil.out(response, Result.error(ResultCodeEnum.LOGIN_AUTH));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (redisUserinfo == null) {
|
||||||
|
ResponseUtil.out(response, Result.error(ResultCodeEnum.LOGIN_AUTH));
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseContext.setUserId(userId);
|
BaseContext.setUserId(loginVo.getId());
|
||||||
BaseContext.setUsername(email);
|
BaseContext.setUsername(loginVo.getEmail());
|
||||||
|
BaseContext.setLoginVo(loginVo);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class SystemLog implements Serializable {
|
||||||
private String methodName;
|
private String methodName;
|
||||||
|
|
||||||
@ApiModelProperty("入参内容")
|
@ApiModelProperty("入参内容")
|
||||||
private Object args;
|
private String args;
|
||||||
|
|
||||||
@ApiModelProperty("返回参数")
|
@ApiModelProperty("返回参数")
|
||||||
private String result;
|
private String result;
|
||||||
|
@ -61,6 +61,9 @@ public class SystemLog implements Serializable {
|
||||||
@ApiModelProperty("当前用户token")
|
@ApiModelProperty("当前用户token")
|
||||||
private String token;
|
private String token;
|
||||||
|
|
||||||
|
@ApiModelProperty("当前用户IP地址")
|
||||||
|
private String ipAddress;
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@ApiModelProperty("创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import lombok.Data;
|
||||||
public class FileMessageConstant {
|
public class FileMessageConstant {
|
||||||
public static final String DOWNLOAD_BUCKET_EXCEPTION = "下载文件失败";
|
public static final String DOWNLOAD_BUCKET_EXCEPTION = "下载文件失败";
|
||||||
public static final String FILE_UPLOAD_EXCEPTION = "文件上传失败";
|
public static final String FILE_UPLOAD_EXCEPTION = "文件上传失败";
|
||||||
public static final String BUCKET_EXISTS_EXCEPTION = "查询文化部对象失败";
|
public static final String BUCKET_EXISTS_EXCEPTION = "查询文件对象失败";
|
||||||
public static final String DELETE_BUCKET_EXCEPTION = "删除文件对象失败";
|
public static final String DELETE_BUCKET_EXCEPTION = "删除文件对象失败";
|
||||||
public static final String FILE_IS_EMPTY = "文件信息为空";
|
public static final String FILE_IS_EMPTY = "文件信息为空";
|
||||||
public static final String FILE_IS_NOT_EXITS = "文件信息为空";
|
public static final String FILE_IS_NOT_EXITS = "文件信息为空";
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package cn.bunny.module.minio.utils;
|
package cn.bunny.module.minio.utils;
|
||||||
|
|
||||||
import cn.bunny.common.service.exception.BunnyException;
|
import cn.bunny.common.service.exception.BunnyException;
|
||||||
|
import cn.bunny.module.minio.properties.MinioProperties;
|
||||||
import cn.bunny.pojo.result.constant.FileMessageConstant;
|
import cn.bunny.pojo.result.constant.FileMessageConstant;
|
||||||
import io.minio.*;
|
import io.minio.*;
|
||||||
import io.minio.messages.*;
|
import io.minio.messages.*;
|
||||||
|
@ -19,9 +20,43 @@ import java.util.Map;
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class MinioUtil {
|
public class MinioUtil {
|
||||||
|
@Autowired
|
||||||
|
private MinioProperties properties;
|
||||||
@Autowired
|
@Autowired
|
||||||
private MinioClient minioClient;
|
private MinioClient minioClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取Minio全路径名
|
||||||
|
*
|
||||||
|
* @param objectName 对象名称
|
||||||
|
* @return 全路径
|
||||||
|
*/
|
||||||
|
public String getFullPath(String objectName) {
|
||||||
|
String url = properties.getEndpointUrl();
|
||||||
|
String bucketName = properties.getBucketName();
|
||||||
|
|
||||||
|
return url + "/" + bucketName + objectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件并返回字节数组
|
||||||
|
*
|
||||||
|
* @param bucketName 桶名称
|
||||||
|
* @param objectName 对象名称
|
||||||
|
* @return 文件流对象
|
||||||
|
*/
|
||||||
|
public byte[] getBucketObjectByte(String bucketName, String objectName) {
|
||||||
|
try {
|
||||||
|
GetObjectResponse getObjectResponse = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(objectName).build());
|
||||||
|
log.info("获取文件 ------ 成功");
|
||||||
|
return getObjectResponse.readAllBytes();
|
||||||
|
} catch (Exception exception) {
|
||||||
|
log.error("获取文件 ------ 失败消息:{}", exception.getLocalizedMessage());
|
||||||
|
exception.getStackTrace();
|
||||||
|
}
|
||||||
|
throw new BunnyException(FileMessageConstant.GET_BUCKET_EXCEPTION);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断桶是否存在
|
* 判断桶是否存在
|
||||||
*
|
*
|
||||||
|
|
|
@ -5,6 +5,7 @@ import org.aspectj.lang.JoinPoint;
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
import org.aspectj.lang.annotation.Before;
|
import org.aspectj.lang.annotation.Before;
|
||||||
import org.aspectj.lang.annotation.Pointcut;
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Aspect
|
@Aspect
|
||||||
|
|
|
@ -54,24 +54,27 @@ public class AutoLogAspect {
|
||||||
Map<String, Object> mapByToken = JwtHelper.getMapByToken(token);
|
Map<String, Object> mapByToken = JwtHelper.getMapByToken(token);
|
||||||
LoginVo loginVo = JSONObject.parseObject(JSONObject.toJSONString(mapByToken), LoginVo.class);
|
LoginVo loginVo = JSONObject.parseObject(JSONObject.toJSONString(mapByToken), LoginVo.class);
|
||||||
|
|
||||||
|
// 插入Ip地址
|
||||||
|
systemLog.setIpAddress(request.getRemoteHost());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 当为null时跳过执行
|
// 当为null时跳过执行
|
||||||
if (annotation != null) return joinPoint.proceed();
|
if (annotation != null) return joinPoint.proceed();
|
||||||
|
|
||||||
// TODO 将请求头token全部转成 map
|
|
||||||
systemLog.setClassPath(classPath);
|
|
||||||
systemLog.setMethodName(methodName);
|
|
||||||
if (args.equals("[null]")) {
|
if (args.equals("[null]")) {
|
||||||
systemLog.setArgs(null);
|
systemLog.setArgs(null);
|
||||||
} else {
|
} else {
|
||||||
systemLog.setArgs(args);
|
systemLog.setArgs(args);
|
||||||
}
|
}
|
||||||
systemLog.setToken(token);
|
// 登录返回Vo不为空即插入
|
||||||
|
if (loginVo != null) {
|
||||||
|
systemLog.setNickname(loginVo.getNickName());
|
||||||
|
systemLog.setEmail(loginVo.getEmail());
|
||||||
|
systemLog.setUpdateUser(loginVo.getId());
|
||||||
|
}
|
||||||
|
|
||||||
systemLog.setNickname(loginVo.getNickName());
|
systemLog.setClassPath(classPath);
|
||||||
systemLog.setEmail(loginVo.getEmail());
|
systemLog.setMethodName(methodName);
|
||||||
systemLog.setUpdateUser(loginVo.getId());
|
systemLog.setToken(token);
|
||||||
|
|
||||||
// 目标对象(连接点)方法的执行
|
// 目标对象(连接点)方法的执行
|
||||||
result = joinPoint.proceed();
|
result = joinPoint.proceed();
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
bunny:
|
bunny:
|
||||||
datasource:
|
datasource:
|
||||||
host: 106.15.251.123
|
host: 192.168.1.4
|
||||||
port: 3305
|
port: 3305
|
||||||
sqlData: guigu-oa
|
sqlData: bunny_docs
|
||||||
username: root
|
username: root
|
||||||
password: "02120212"
|
password: "02120212"
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
host: 47.120.65.66
|
host: 192.168.1.4
|
||||||
port: 6379
|
port: 6379
|
||||||
database: 3
|
database: 3
|
||||||
password: "02120212"
|
password: "123456"
|
||||||
|
|
||||||
minio:
|
minio:
|
||||||
endpointUrl: "http://129.211.31.58:9000"
|
endpointUrl: "http://192.168.1.4:9000"
|
||||||
bucket-name: ssyx
|
bucket-name: test
|
||||||
accessKey: bunny
|
accessKey: bunny
|
||||||
secretKey: "02120212"
|
secretKey: "02120212"
|
|
@ -98,8 +98,10 @@ class JwtHelperTest {
|
||||||
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ7CIBBA4buM2_IzQCuw8gTeYQqTFC3aVDQmTe9uD-D6e3kbLLRShbjtHTxKul-pMkR4v3i98JfqMrNMzwod0IcarYdNrS1RKTRBGkRpUfY-Oq21Oqk0UTvakiGisR1wpTL__91aOWDMIRtGFnq0Xrg0oBh7rwUOIZPzaPV5gP0HuCPau6cAAAA.5CGFhEz1i9RLKfFMYHA7cOg3sdfFEDZnqbBHSP9R_XY";
|
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ7CIBBA4buM2_IzQCuw8gTeYQqTFC3aVDQmTe9uD-D6e3kbLLRShbjtHTxKul-pMkR4v3i98JfqMrNMzwod0IcarYdNrS1RKTRBGkRpUfY-Oq21Oqk0UTvakiGisR1wpTL__91aOWDMIRtGFnq0Xrg0oBh7rwUOIZPzaPV5gP0HuCPau6cAAAA.5CGFhEz1i9RLKfFMYHA7cOg3sdfFEDZnqbBHSP9R_XY";
|
||||||
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ6CMBBA4buMW_oz7VChK0_gHcZSQpUiwWpMCHe3B3D9vbwdVt44g9-PBpYUHlfOETy8X3G7xC_ndY4yPDM0wB8uvFWbSlm9Umh6aRClRdl2nrTW6qTCxKW2aQCPxjYQM6f5_-9eUgXqWzThRmKk8SzIaBSMzgnXsuuI-sFqguMH0SvcYacAAAA.qW_gqkc8RQJM-UbFVj7xldSEv1RORO4qlw6VMrTEmM0";
|
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ6CMBBA4buMW_oz7VChK0_gHcZSQpUiwWpMCHe3B3D9vbwdVt44g9-PBpYUHlfOETy8X3G7xC_ndY4yPDM0wB8uvFWbSlm9Umh6aRClRdl2nrTW6qTCxKW2aQCPxjYQM6f5_-9eUgXqWzThRmKk8SzIaBSMzgnXsuuI-sFqguMH0SvcYacAAAA.qW_gqkc8RQJM-UbFVj7xldSEv1RORO4qlw6VMrTEmM0";
|
||||||
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MSw7CIBRA0b08p_yhFBi5AvfwApiiRQmiMWm6d7sAx-fmbtCwY4Ww7QQeJd4vWDMEeL9yP-cv1rZmFp8VCOAHB_bDljFa4Fwqz5SUTEs2uWCEEPzE44LjaEuCIJUmkCuW9f_vNsoBaJ1yYnZ0Rqep8VlRnESi3khrklFeXC3sP3hOgQ2nAAAA.bkPBbfpLd21eaJE2gjzniUx5n9VvCqWSY_zBiu8oO9k";
|
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MSw7CIBRA0b08p_yhFBi5AvfwApiiRQmiMWm6d7sAx-fmbtCwY4Ww7QQeJd4vWDMEeL9yP-cv1rZmFp8VCOAHB_bDljFa4Fwqz5SUTEs2uWCEEPzE44LjaEuCIJUmkCuW9f_vNsoBaJ1yYnZ0Rqep8VlRnESi3khrklFeXC3sP3hOgQ2nAAAA.bkPBbfpLd21eaJE2gjzniUx5n9VvCqWSY_zBiu8oO9k";
|
||||||
|
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MWw7CIBBA0b2Mv7yGhxa-XIF7GCmkaNEG0Zg03btdgN_n5q6wUKMKYd0YPEq8X6gmCPB-pXZOX6rLnER8VmBAH-rUdpt6X4KUqL3QiMKgcEOwSil5kHGivrdlhIDaMEiVyvz_d-tlhxg1WoXI6aiu3GLWfLCD5z6PJ2eMR5cdbD-TzBm3pwAAAA.Zq6T6wsZ9aoRxck4LDAl7QwGDUu_eMiRsGgNt5fSM-4";
|
||||||
|
|
||||||
Map<String, Object> tokenByMap = JwtHelper.getTokenByMap(createTokenWithMapToken);
|
|
||||||
|
Map<String, Object> tokenByMap = JwtHelper.getMapByToken(createTokenWithMapToken);
|
||||||
|
|
||||||
// 转为Java实体对戏那个
|
// 转为Java实体对戏那个
|
||||||
User user = JSONObject.parseObject(JSONObject.toJSONString(tokenByMap), User.class);
|
User user = JSONObject.parseObject(JSONObject.toJSONString(tokenByMap), User.class);
|
||||||
|
@ -114,7 +116,7 @@ class JwtHelperTest {
|
||||||
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ7CIBBA4buMW36nQAsrT-AdpoApWrSpaEya3t0ewPX38jZYaKUKYdsZPEq8X6hmCPB-5fWcv1SXOYv4rMCAPtRoPWxqbQlSavQCtRadFnYIRiklTzJO1I62JAgaOwa5Upn__26tHIBjTOSvxB2agRurDCeTHMceE1nne6dH2H-VOEqApwAAAA.j5BcFLT-2HENeYS8LvD27tyRnI1rE-iFzjBy1iY02T4";
|
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ7CIBBA4buMW36nQAsrT-AdpoApWrSpaEya3t0ewPX38jZYaKUKYdsZPEq8X6hmCPB-5fWcv1SXOYv4rMCAPtRoPWxqbQlSavQCtRadFnYIRiklTzJO1I62JAgaOwa5Upn__26tHIBjTOSvxB2agRurDCeTHMceE1nne6dH2H-VOEqApwAAAA.j5BcFLT-2HENeYS8LvD27tyRnI1rE-iFzjBy1iY02T4";
|
||||||
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ7CIBBA4buM2_JXWkpZeQLvMNIhRYsSRGPS9O5yANffy9shY8EEbj86eER_v2AicPB-UTnTF1PeiPtngg7wgxVLs7XW7IRQ_cx7pbhWfLRukFKKk_Ar1tbGBZzqdQeUMG7_f7caG1zlZCZDyGavFzZ4MzC0ZmIWQ1DWeBtGguMHw7854qcAAAA.V4VLIJ7vUqnfd1LeQkXa3t8V_376DWVAA_g0PE_6_S8";
|
createTokenWithMapToken = "eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_23MTQ7CIBBA4buM2_JXWkpZeQLvMNIhRYsSRGPS9O5yANffy9shY8EEbj86eER_v2AicPB-UTnTF1PeiPtngg7wgxVLs7XW7IRQ_cx7pbhWfLRukFKKk_Ar1tbGBZzqdQeUMG7_f7caG1zlZCZDyGavFzZ4MzC0ZmIWQ1DWeBtGguMHw7854qcAAAA.V4VLIJ7vUqnfd1LeQkXa3t8V_376DWVAA_g0PE_6_S8";
|
||||||
|
|
||||||
Map<String, Object> tokenByMap = JwtHelper.getTokenByMap(createTokenWithMapToken, key);
|
Map<String, Object> tokenByMap = JwtHelper.getMapByToken(createTokenWithMapToken, key);
|
||||||
// 转为Java实体对戏那个
|
// 转为Java实体对戏那个
|
||||||
User user = JSONObject.parseObject(JSONObject.toJSONString(tokenByMap), User.class);
|
User user = JSONObject.parseObject(JSONObject.toJSONString(tokenByMap), User.class);
|
||||||
System.out.println(user);
|
System.out.println(user);
|
||||||
|
|
Loading…
Reference in New Issue