From cfcc3396ea60b46fa76997f81c8ce206890c10de Mon Sep 17 00:00:00 2001
From: Carl <376654749@qq.com>
Date: Mon, 17 Jan 2022 14:20:29 +0800
Subject: [PATCH] add jwt decode and remove shopping cart API parameter
memberId
---
smart-admin-service/smart-admin-api/pom.xml | 9 ++
.../system/royalcanin/MemberService.java | 56 ++----------
.../system/royalcanin/SMS/SMSController.java | 3 +
.../royalcanin/good/GoodController.java | 8 +-
.../memberAddress/MemberAddressAddEntity.java | 6 +-
.../MemberAddressDeleteEntity.java | 2 +-
.../MemberAddressGetAllEntity.java | 2 +-
.../MemberAddressUpdateEntity.java | 6 +-
.../lab1024/smartadmin/util/SmartJWTUtil.java | 85 +++++++++++++++++++
9 files changed, 119 insertions(+), 58 deletions(-)
create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java
diff --git a/smart-admin-service/smart-admin-api/pom.xml b/smart-admin-service/smart-admin-api/pom.xml
index 5e30eaad..283d38be 100644
--- a/smart-admin-service/smart-admin-api/pom.xml
+++ b/smart-admin-service/smart-admin-api/pom.xml
@@ -29,6 +29,15 @@
-->
+
+
+
+ com.auth0
+ java-jwt
+ 3.8.2
+
+
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java
index 01a292cf..1b7f4ba3 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java
@@ -1,47 +1,25 @@
package net.lab1024.smartadmin.module.system.royalcanin;
import com.alibaba.fastjson.JSONObject;
-import eu.bitwalker.useragentutils.UserAgent;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-import net.lab1024.smartadmin.common.constant.JudgeEnum;
import net.lab1024.smartadmin.common.heartbeat.StringUtil;
-import net.lab1024.smartadmin.module.business.log.LogService;
-import net.lab1024.smartadmin.module.business.log.userloginlog.domain.UserLoginLogEntity;
import net.lab1024.smartadmin.module.system.royalcanin.member.*;
import net.lab1024.smartadmin.util.MapRemoveNullUtil;
+import net.lab1024.smartadmin.util.SmartJWTUtil;
import net.lab1024.smartadmin.util.SmartHttpUtil;
-import net.lab1024.smartadmin.util.SmartIPUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.Date;
import java.util.Map;
-import java.util.UUID;
@Service
public class MemberService {
private String url = "http://miniapp-test.royalcanin.com.cn:7080/crm/member/";
- @Autowired
- private LogService logService;
- /**
- * 过期时间一天
- */
- private static final int EXPIRE_SECONDS = 1 * 24 * 3600;
- /**
- * jwt加密字段
- */
- private static final String CLAIM_ID_KEY = "id";
- @Value("${jwt.key}")
- private String jwtKey;
+
+
+
public String memberGet(MemberGetEntity memberGetEntity, HttpServletRequest request)throws Exception {
Map paramMap = MapRemoveNullUtil.setConditionMap(memberGetEntity);
@@ -52,7 +30,7 @@ public class MemberService {
if(jsonObject.getString("code").equals("0")){
JSONObject json = JSONObject.parseObject(jsonObject.getString("data"));
String id = json.getString("id");
- jsonObject.put("xaccessToken",generateToken(id));
+ jsonObject.put("xaccessToken", SmartJWTUtil.generateToken(id));
return jsonObject.toJSONString();
}else {
return sb;
@@ -83,7 +61,7 @@ public class MemberService {
return SmartHttpUtil.httpPostRaw(url+"check",jsonObject.toString(),null,"utf-8");
}
- public String memberUpdate(MemberUpdateEntity memberUpdateEntity)throws Exception{
+ public String memberUpdate(MemberUpdateEntity memberUpdateEntity){
Map paramMap = MapRemoveNullUtil.setConditionMap(memberUpdateEntity);
paramMap.put("id",StringUtil.toString(memberUpdateEntity.getId()).equals("0")?null:StringUtil.toString(memberUpdateEntity.getId()));
paramMap.put("cityId",StringUtil.toString(memberUpdateEntity.getCityId()).equals("0")?null:StringUtil.toString(memberUpdateEntity.getCityId()));
@@ -94,25 +72,7 @@ public class MemberService {
}
- /**
- * 功能描述: 生成JWT TOKEN
- *
- * @return
- * @auther Carl
- * @date 2021/12/8 0012
- */
- public String generateToken(String UserId) {
- Long id = Long.parseLong(UserId);
- /**将token设置为jwt格式*/
- String baseToken = UUID.randomUUID().toString();
- LocalDateTime localDateTimeNow = LocalDateTime.now();
- LocalDateTime localDateTimeExpire = localDateTimeNow.plusSeconds(EXPIRE_SECONDS);
- Date from = Date.from(localDateTimeNow.atZone(ZoneId.systemDefault()).toInstant());
- Date expire = Date.from(localDateTimeExpire.atZone(ZoneId.systemDefault()).toInstant());
- Claims jwtClaims = Jwts.claims().setSubject(baseToken);
- jwtClaims.put(CLAIM_ID_KEY, id);
- String compactJws = Jwts.builder().setClaims(jwtClaims).setNotBefore(from).setExpiration(expire).signWith(SignatureAlgorithm.HS512, jwtKey).compact();
- return compactJws;
- }
+
+
}
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/SMS/SMSController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/SMS/SMSController.java
index 59057ad7..65aa3a7f 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/SMS/SMSController.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/SMS/SMSController.java
@@ -53,6 +53,9 @@ public class SMSController {
String tamp = requestMap.get("tamp").toString();
String msgNum = requestMap.get("msgNum").toString();
String hash = MD5Utils.getMD5Code(KEY + "@" + tamp + "@" + msgNum);
+ if(tamp == "")
+ return ResponseDTO.wrap(OrderResponseCodeConst.SMS_FAIL);
+
if (tamp.compareTo(currentTime) > 0) {
if (hash.equalsIgnoreCase(requestHash)){
//校验成功
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java
index a7a571e4..61bf1a28 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/GoodController.java
@@ -17,11 +17,13 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductMasterQ
import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductQueryEntity;
import net.lab1024.smartadmin.module.system.royalcanin.good.service.CartService;
import net.lab1024.smartadmin.module.system.royalcanin.good.service.GoodService;
+import net.lab1024.smartadmin.util.SmartJWTUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.List;
@@ -33,6 +35,8 @@ public class GoodController {
@Autowired
private RoyalcaninOperateLogService royalcaninOperateLogService;
+ public static final String TOKEN_NAME = "x-access-token";
+
@Autowired
private CartService cartService;
@@ -125,12 +129,12 @@ public class GoodController {
@ApiOperation(value = "删除购物车信息", notes = "删除购物车信息")
@PostMapping("royalcanin/cancelCartProductInfo")
- public ResponseDTO cancelCartProductInfo(String memberId,@RequestBody List productCode){
+ public ResponseDTO cancelCartProductInfo(HttpServletRequest request, @RequestBody List productCode){
+ String memberId = SmartJWTUtil.decodeToken(request.getHeader(TOKEN_NAME));
for (int i = 0 ;i < productCode.size();i++) {
cartService.cancelProduct(memberId,productCode.get(i));
}
return ResponseDTO.succ();
}
-
}
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressAddEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressAddEntity.java
index c09df093..fc7939cc 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressAddEntity.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressAddEntity.java
@@ -14,7 +14,7 @@ public class MemberAddressAddEntity {
/**
* 会员ID
*/
- private int memberId;
+ private String memberId;
/**
* 省份ID
@@ -24,12 +24,12 @@ public class MemberAddressAddEntity {
/**
* 城市ID
*/
- private int cityId;
+ private String cityId;
/**
* 区ID
*/
- private int districtId;
+ private String districtId;
/**
* 地址
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressDeleteEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressDeleteEntity.java
index 8e4ca5bd..99e99b3d 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressDeleteEntity.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressDeleteEntity.java
@@ -16,7 +16,7 @@ public class MemberAddressDeleteEntity {
/**
* 会员ID
*/
- private int memberId;
+ private String memberId;
/**
* 宠物ID
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressGetAllEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressGetAllEntity.java
index a8e03143..c5a8c135 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressGetAllEntity.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressGetAllEntity.java
@@ -19,5 +19,5 @@ public class MemberAddressGetAllEntity {
/**
* 会员ID
*/
- private int memberId;
+ private String memberId;
}
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressUpdateEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressUpdateEntity.java
index 29fc9818..a57784ad 100644
--- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressUpdateEntity.java
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/memberAddress/MemberAddressUpdateEntity.java
@@ -17,7 +17,7 @@ public class MemberAddressUpdateEntity {
/**
* 会员ID
*/
- private int memberId;
+ private String memberId;
/**
* 会员地址ID
@@ -32,12 +32,12 @@ public class MemberAddressUpdateEntity {
/**
* 城市ID
*/
- private int cityId;
+ private String cityId;
/**
* 区ID
*/
- private int districtId;
+ private String districtId;
/**
* 地址
diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java
new file mode 100644
index 00000000..a4117856
--- /dev/null
+++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java
@@ -0,0 +1,85 @@
+package net.lab1024.smartadmin.util;
+
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTVerifier;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.exceptions.JWTVerificationException;
+import com.auth0.jwt.interfaces.DecodedJWT;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmartJWTUtil {
+
+ /**
+ * 过期时间一天
+ */
+ private static final int EXPIRE_SECONDS = 1 * 24 * 3600;
+ /**
+ * jwt加密字段
+ */
+ private static final String CLAIM_ID_KEY = "id";
+
+ //设置过期时间
+ private static final long EXPIRE_DATE = 30 * 60 * 100000;
+ //token秘钥
+ private static final String TOKEN_SECRET = "smart-admin-jwt-key";
+
+
+
+
+ public static String generateToken(String userId) {
+ String token;
+ try {
+ //过期时间
+ Date date = new Date(System.currentTimeMillis() + EXPIRE_DATE);
+ //秘钥及加密算法
+ Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
+ //设置头部信息
+ Map header = new HashMap<>();
+ header.put("typ", "JWT");
+ header.put("alg", "HS256");
+ //携带UserId信息,生成签名
+ token = JWT.create()
+ .withHeader(header)
+ .withClaim(CLAIM_ID_KEY, userId)
+ .withExpiresAt(date)
+ .sign(algorithm);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ return token;
+ }
+
+
+ /**
+ * JWT解密
+ *
+ * @Author: RZH
+ * @Date: 2020/4/6 9:30
+ */
+ public static String decodeToken(final String token) {
+ String userId = null;
+ try {
+ JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET))
+ .build();
+ DecodedJWT jwt = verifier.verify(token);
+ if (jwt != null) {
+ userId = jwt.getClaim(CLAIM_ID_KEY).asString();
+ }
+ } catch (JWTVerificationException exception) {
+ exception.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
+ return userId;
+ }
+
+ public static void main(String[] args) {
+ String token = SmartJWTUtil.generateToken("844350");
+ System.out.println(SmartJWTUtil.decodeToken(token));
+ }
+
+}