adding toekn logic

This commit is contained in:
Carl 2021-12-08 14:55:49 +08:00
parent a9ffb1c75b
commit 5769f3413d
2 changed files with 67 additions and 8 deletions

View File

@ -70,7 +70,7 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter {
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,11 +119,13 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter {
return true;
}
//需要验证权限
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;
}

View File

@ -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<String, String> 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<String, String> 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;
}
}