fix
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package com.starry.admin.common.component;
|
||||
|
||||
import com.starry.common.utils.IdUtils;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import cn.hutool.http.useragent.UserAgent;
|
||||
@@ -12,8 +11,8 @@ import com.starry.common.constant.Constants;
|
||||
import com.starry.common.constant.SecurityConstants;
|
||||
import com.starry.common.context.CustomSecurityContextHolder;
|
||||
import com.starry.common.redis.RedisCache;
|
||||
import com.starry.common.utils.IdUtils;
|
||||
import com.starry.common.utils.ServletUtils;
|
||||
import com.starry.common.utils.StringUtils;
|
||||
import com.starry.common.utils.ip.AddressUtils;
|
||||
import com.starry.common.utils.ip.IpUtils;
|
||||
import io.jsonwebtoken.Claims;
|
||||
@@ -173,6 +172,8 @@ public class JwtToken {
|
||||
jwtUser.setExpireTime(jwtUser.getLoginTime() + expire * 1000);
|
||||
String userKey = getTokenKey(jwtUser.getToken());
|
||||
redisCache.setCacheObject(userKey, jwtUser, expire, TimeUnit.SECONDS);
|
||||
String key = "login:resource:" + jwtUser.getUserId();
|
||||
redisCache.setCacheObject(key, userKey, expire, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
private String getTokenKey(String uuid) {
|
||||
@@ -221,13 +222,6 @@ public class JwtToken {
|
||||
* @param jwtUser
|
||||
* @return 令牌
|
||||
*/
|
||||
public void verifyToken(JwtUser jwtUser) {
|
||||
long expireTime = jwtUser.getExpireTime();
|
||||
long currentTime = System.currentTimeMillis();
|
||||
if (expireTime - currentTime <= MILLIS_MINUTE_TEN) {
|
||||
refersToken(jwtUser);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户身份信息
|
||||
@@ -254,7 +248,10 @@ public class JwtToken {
|
||||
loginUser.setIpaddr(IpUtils.getIpAddr(ServletUtils.getRequest()));
|
||||
// 添加地址信息
|
||||
setUserAgent(loginUser);
|
||||
refreshToken(loginUser);
|
||||
String userRedisKey = refreshToken(loginUser);
|
||||
|
||||
String key = "login:resource:" + loginUser.getUserId();
|
||||
redisCache.setCacheObject(key, userRedisKey, expire, TimeUnit.SECONDS);
|
||||
|
||||
// Jwt存储信息
|
||||
Map<String, Object> claimsMap = new HashMap<>(8);
|
||||
@@ -292,13 +289,15 @@ public class JwtToken {
|
||||
* 刷新令牌有效期
|
||||
*
|
||||
* @param loginUser 登录信息
|
||||
* @return
|
||||
*/
|
||||
public void refreshToken(LoginUser loginUser) {
|
||||
public String refreshToken(LoginUser loginUser) {
|
||||
loginUser.setLoginTime(System.currentTimeMillis());
|
||||
loginUser.setExpireTime(loginUser.getLoginTime() + expire * 1000);
|
||||
// 根据uuid将loginUser缓存
|
||||
String userKey = getTokenKey(loginUser.getToken());
|
||||
redisCache.setCacheObject(userKey, loginUser, expire, TimeUnit.MINUTES);
|
||||
return userKey;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||
import com.starry.admin.modules.custom.service.impl.PlayCustomUserInfoServiceImpl;
|
||||
import com.starry.admin.modules.platform.entity.SysTenantEntity;
|
||||
import com.starry.admin.modules.platform.service.ISysTenantService;
|
||||
import com.starry.admin.modules.system.service.SysUserService;
|
||||
import com.starry.admin.modules.weichat.service.WxTokenService;
|
||||
import com.starry.admin.utils.SecurityUtils;
|
||||
import com.starry.common.constant.Constants;
|
||||
@@ -68,6 +69,8 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
|
||||
|
||||
@Resource
|
||||
private RedisCache redisCache;
|
||||
@Resource
|
||||
private SysUserService userService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -134,6 +137,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
|
||||
LoginUser jwtUser = jwtToken.getNewLoginUser(httpServletRequest);
|
||||
if (null != jwtUser && null == SecurityContextHolder.getContext().getAuthentication()) {
|
||||
jwtToken.verifyToken(jwtUser);
|
||||
userService.selectUserById(jwtUser.getUserId());
|
||||
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
|
||||
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(httpServletRequest));
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
|
||||
Reference in New Issue
Block a user