From 5769f3413d7d249f6054dd92e40ea9b068ea0cf9 Mon Sep 17 00:00:00 2001 From: Carl <376654749@qq.com> Date: Wed, 8 Dec 2021 14:55:49 +0800 Subject: [PATCH] adding toekn logic --- .../SmartAuthenticationInterceptor.java | 16 ++--- .../system/royalcanin/MemberService.java | 59 ++++++++++++++++++- 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java index f23c5537..79fe1136 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java @@ -66,11 +66,11 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { } //不需要登录的注解 - Boolean isNoNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class) != null; + Boolean isNoNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class) != null; if (isNoNeedLogin) { return true; } - Boolean noNeedLogin = request.getServletPath().startsWith("/royalcanin"); + Boolean noNeedLogin = request.getServletPath().startsWith("/royalcanin")&&request.getParameter("type").equals("get"); if (noNeedLogin) { return true; } @@ -93,7 +93,7 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { //根据token获取登录用户 RequestTokenBO requestToken = loginTokenService.getEmployeeTokenInfo(xAccessToken); - if (null == requestToken) { + if (null == requestToken &&!request.getServletPath().startsWith("/royalcanin")) { this.outputResult(response, LoginResponseCodeConst.LOGIN_ERROR); return false; } @@ -119,10 +119,12 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { return true; } //需要验证权限 - Boolean privilegeValidPass = privilegeEmployeeService.checkEmployeeHavePrivilege(requestToken, controllerName, methodName); - if (! privilegeValidPass) { - this.outputResult(response, LoginResponseCodeConst.NOT_HAVE_PRIVILEGES); - return false; + if(!request.getServletPath().startsWith("/royalcanin")&&request.getParameter("type").equals("get")) { + Boolean privilegeValidPass = privilegeEmployeeService.checkEmployeeHavePrivilege(requestToken, controllerName, methodName); + if (!privilegeValidPass) { + this.outputResult(response, LoginResponseCodeConst.NOT_HAVE_PRIVILEGES); + return false; + } } SmartRequestTokenUtil.setUser(request, requestToken); return true; 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 c8bdc0da..6bd4a3be 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,20 +1,45 @@ package net.lab1024.smartadmin.module.system.royalcanin; +import com.alibaba.fastjson.JSONObject; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; import net.lab1024.smartadmin.common.heartbeat.StringUtil; +import net.lab1024.smartadmin.module.system.login.LoginTokenService; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberAddEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberCheckEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberGetEntity; import net.lab1024.smartadmin.module.system.royalcanin.member.MemberUpdateMemberLevelEntity; import net.lab1024.smartadmin.util.SmartHttpUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; import java.util.HashMap; 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 LoginTokenService loginTokenService; + + /** + * 过期时间一天 + */ + 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)throws Exception { Map paramMap = new HashMap<>(); @@ -22,7 +47,12 @@ public class MemberService { paramMap.put("id",StringUtil.toString(memberGetEntity.getId())); paramMap.put("mobile",memberGetEntity.getMobile()); paramMap.put("unionId",memberGetEntity.getUnionId()); - return SmartHttpUtil.sendPostForm(url+"get",paramMap,null); + String sb = SmartHttpUtil.sendPostForm(url+"get",paramMap,null); + JSONObject jsonObject = JSONObject.parseObject(sb); + JSONObject json = JSONObject.parseObject(jsonObject.getString("data")); + String id = json.getString("id"); + jsonObject.put("xaccessToken",generateToken(id)); + return jsonObject.toJSONString(); } public String memberCheck(MemberCheckEntity memberCheckEntity)throws Exception { Map paramMap = new HashMap<>(); @@ -64,4 +94,31 @@ public class MemberService { paramMap.put("memberLevel",StringUtil.toString(memberUpdateMemberLevelEntity.getMemberLevel())); return SmartHttpUtil.sendPostForm(url+"check",paramMap,null); } + + + /** + * 功能描述: 生成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(); + +// EmployeeBO employeeBO = employeeService.getById(id); +// RequestTokenBO tokenBO = new RequestTokenBO(employeeBO); + + return compactJws; + } }