浏览代码

Merge remote-tracking branch 'origin/dev/one' into dev/one

zhoutg 6 年之前
父节点
当前提交
c85732c79f

+ 16 - 0
user-service/src/main/java/com/diagbot/entity/JwtStore.java

@@ -0,0 +1,16 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2018/10/29 14:38
+ */
+@Getter
+@Setter
+public class JwtStore {
+    private String accessToken;
+    private String refreshToken;
+}

+ 15 - 0
user-service/src/main/java/com/diagbot/facade/UserFacade.java

@@ -24,6 +24,7 @@ import com.diagbot.dto.UserLoginDTO;
 import com.diagbot.dto.UserOrgDTO;
 import com.diagbot.dto.UserOrgizationProductDTO;
 import com.diagbot.entity.JWT;
+import com.diagbot.entity.JwtStore;
 import com.diagbot.entity.Organization;
 import com.diagbot.entity.User;
 import com.diagbot.entity.UserAuthentication;
@@ -107,6 +108,8 @@ public class UserFacade extends UserServiceImpl {
     DiagbotmanClient diagbotmanClient;
     @Autowired
     private VisibleIdCreater visibleIdCreater;
+    @Autowired
+    private TokenFacade tokenFacade;
 	
 
     /**
@@ -393,6 +396,11 @@ public class UserFacade extends UserServiceImpl {
         data.setRefreshToken(jwt.getRefresh_token());
         data.setType(user.getType());
         data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
+        //token存入redis
+        JwtStore jwtStore = new JwtStore();
+        jwtStore.setAccessToken(jwt.getAccess_token());
+        jwtStore.setRefreshToken(jwt.getRefresh_token());
+        tokenFacade.createToken(jwtStore);
         return data;
     }
 
@@ -409,12 +417,19 @@ public class UserFacade extends UserServiceImpl {
                     "刷新令牌不能为空");
         }
 
+        //验证刷新令牌有效性
+
         JWT jwt = authServiceClient.refreshToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2", "refresh_token", refreshToken);
         if (null == jwt) {
             throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
         }
         data.setAccessToken(jwt.getAccess_token());
         data.setRefreshToken(jwt.getRefresh_token());
+        //token存入redis
+        JwtStore jwtStore = new JwtStore();
+        jwtStore.setAccessToken(jwt.getAccess_token());
+        jwtStore.setRefreshToken(jwt.getRefresh_token());
+        tokenFacade.createToken(jwtStore);
         return data;
     }
 

+ 3 - 1
user-service/src/main/java/com/diagbot/service/TokenService.java

@@ -1,5 +1,7 @@
 package com.diagbot.service;
 
+import com.diagbot.entity.JwtStore;
+
 /**
  * @Description: Token验证类
  * @author: gaodm
@@ -12,7 +14,7 @@ public interface TokenService {
      * @param token 用户token
      * @return
      */
-    Boolean createToken(String token);
+    Boolean createToken(JwtStore token);
 
     /**
      * 验证token是否有效

+ 10 - 6
user-service/src/main/java/com/diagbot/service/impl/TokenServiceImpl.java

@@ -2,6 +2,7 @@ package com.diagbot.service.impl;
 
 import com.auth0.jwt.interfaces.Claim;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import com.diagbot.entity.JwtStore;
 import com.diagbot.service.TokenService;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.JwtUtil;
@@ -54,8 +55,8 @@ public class TokenServiceImpl implements TokenService {
      * @return
      */
     @Override
-    public Boolean createToken(String token) {
-        DecodedJWT jwt = JwtUtil.decodedJWT(token);
+    public Boolean createToken(JwtStore token) {
+        DecodedJWT jwt = JwtUtil.decodedJWT(token.getAccessToken());
         Map<String, Claim> claims = jwt.getClaims();
         String userId = claims.get("user_id").asInt().toString();
         Date expDate = claims.get("exp").asDate();
@@ -89,21 +90,24 @@ public class TokenServiceImpl implements TokenService {
      */
     @Override
     public Boolean verifyToken(String token) {
+        if (null == token){
+            return false;
+        }
         String userId = JwtUtil.getUserId(token);
         //从redis中取出
         final byte[] redis_key = getUserTokenKey(userId);
-        String tokenStore = (String) redisForToken.execute(new RedisCallback<String>() {
+        JwtStore tokenStore = (JwtStore) redisForToken.execute(new RedisCallback<JwtStore>() {
             @Override
-            public String doInRedis(RedisConnection connection) throws DataAccessException {
+            public JwtStore doInRedis(RedisConnection connection) throws DataAccessException {
                 byte[] bytes = connection.get(redis_key);
                 if (bytes == null) {
                     return null;
                 }
-                return (String) deserializeValue(bytes);
+                return (JwtStore) deserializeValue(bytes);
             }
         });
 
-        if (null != tokenStore && tokenStore.equals(token)) {
+        if (null != tokenStore && tokenStore.getAccessToken().equals(token)) {
             return true;
         } else {
             return false;