From cd1a68f15e107f036d9c265db88bc775a36f43c7 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期四, 13 一月 2022 10:26:18 +0800 Subject: [PATCH] update 防止 MP 无主键警告 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java | 62 +++++++++++++++++-------------- 1 files changed, 34 insertions(+), 28 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java index ae95660..af14f37 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java @@ -3,19 +3,20 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.jwt.JWTUtil; +import cn.hutool.jwt.signers.JWTSigner; +import cn.hutool.jwt.signers.JWTSignerUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.properties.TokenProperties; -import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import com.ruoyi.common.utils.redis.RedisUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; @@ -27,7 +28,8 @@ * * @author Lion Li */ -@Component +@RequiredArgsConstructor +@Service public class TokenServiceImpl implements TokenService { protected static final long MILLIS_SECOND = 1000; @@ -36,28 +38,28 @@ private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L; - @Autowired - private TokenProperties tokenProperties; + private final TokenProperties tokenProperties; /** * 鑾峰彇鐢ㄦ埛韬唤淇℃伅 * * @return 鐢ㄦ埛淇℃伅 */ + @Override public LoginUser getLoginUser(HttpServletRequest request) { // 鑾峰彇璇锋眰鎼哄甫鐨勪护鐗� String token = getToken(request); if (StringUtils.isNotEmpty(token)) { - try { - Claims claims = parseToken(token); - // 瑙f瀽瀵瑰簲鐨勬潈闄愪互鍙婄敤鎴蜂俊鎭� - String uuid = (String) claims.get(Constants.LOGIN_USER_KEY); - String userKey = getTokenKey(uuid); - LoginUser user = RedisUtils.getCacheObject(userKey); - return user; - } catch (Exception e) { + try { + JSONObject claims = parseToken(token); + // 瑙f瀽瀵瑰簲鐨勬潈闄愪互鍙婄敤鎴蜂俊鎭� + String uuid = claims.getStr(Constants.LOGIN_USER_KEY); + String userKey = getTokenKey(uuid); + LoginUser user = RedisUtils.getCacheObject(userKey); + return user; + } catch (Exception e) { - } + } } return null; } @@ -65,6 +67,7 @@ /** * 璁剧疆鐢ㄦ埛韬唤淇℃伅 */ + @Override public void setLoginUser(LoginUser loginUser) { if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) { refreshToken(loginUser); @@ -74,6 +77,7 @@ /** * 鍒犻櫎鐢ㄦ埛韬唤淇℃伅 */ + @Override public void delLoginUser(String token) { if (StringUtils.isNotEmpty(token)) { String userKey = getTokenKey(token); @@ -87,6 +91,7 @@ * @param loginUser 鐢ㄦ埛淇℃伅 * @return 浠ょ墝 */ + @Override public String createToken(LoginUser loginUser) { String token = IdUtil.fastUUID(); loginUser.setToken(token); @@ -104,6 +109,7 @@ * @param loginUser * @return 浠ょ墝 */ + @Override public void verifyToken(LoginUser loginUser) { long expireTime = loginUser.getExpireTime(); long currentTime = System.currentTimeMillis(); @@ -117,6 +123,7 @@ * * @param loginUser 鐧诲綍淇℃伅 */ + @Override public void refreshToken(LoginUser loginUser) { loginUser.setLoginTime(System.currentTimeMillis()); loginUser.setExpireTime(loginUser.getLoginTime() + tokenProperties.getExpireTime() * MILLIS_MINUTE); @@ -130,6 +137,7 @@ * * @param loginUser 鐧诲綍淇℃伅 */ + @Override public void setUserAgent(LoginUser loginUser) { UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent")); String ip = ServletUtils.getClientIP(); @@ -146,9 +154,8 @@ * @return 浠ょ墝 */ private String createToken(Map<String, Object> claims) { - String token = Jwts.builder() - .setClaims(claims) - .signWith(SignatureAlgorithm.HS512, tokenProperties.getSecret()).compact(); + JWTSigner signer = JWTSignerUtil.hs512(tokenProperties.getSecret().getBytes()); + String token = JWTUtil.createToken(claims, signer); return token; } @@ -158,11 +165,9 @@ * @param token 浠ょ墝 * @return 鏁版嵁澹版槑 */ - private Claims parseToken(String token) { - return Jwts.parser() - .setSigningKey(tokenProperties.getSecret()) - .parseClaimsJws(token) - .getBody(); + private JSONObject parseToken(String token) { + JWTSigner signer = JWTSignerUtil.hs512(tokenProperties.getSecret().getBytes()); + return JWTUtil.parseToken(token).setSigner(signer).getPayload().getClaimsJson(); } /** @@ -171,9 +176,10 @@ * @param token 浠ょ墝 * @return 鐢ㄦ埛鍚� */ + @Override public String getUsernameFromToken(String token) { - Claims claims = parseToken(token); - return claims.getSubject(); + JSONObject claims = parseToken(token); + return claims.getStr("sub"); } /** -- Gitblit v1.9.3