Browse Source

'优化登录并注册接口,增加微信登录openid、token存入redis数据库的逻辑'

james 8 tháng trước cách đây
mục cha
commit
2e04ff9370

+ 3 - 3
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/TokenController.java

@@ -68,7 +68,7 @@ public class TokenController {
         // 用户登录
         LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(), form.getTenantId());
         // 获取登录token
-        return ApiResult.success(tokenService.createToken(userInfo));
+        return ApiResult.success(tokenService.createToken(userInfo,""));
     }
 
 
@@ -84,6 +84,7 @@ public class TokenController {
         sysUser.setRoles(rolePermission);
         SysPerson sysPerson = sysPersonService.getsysPerson(userInfo.getUserId());
         sysUser.setSysPerson(sysPerson);
+        String openId = form.getOpenId();
 
         if(StringUtils.isNotEmpty(form.getType())){
             Long userId = userInfo.getUserId();
@@ -99,7 +100,6 @@ public class TokenController {
                 }
             }else if(type.equals("wx")){
                 String phone = form.getPhone();
-                String openId = form.getOpenId();
                 if(count > 0){
                     userMapper.updateMbUser(phone,openId,userId,null, userInfo.getUserName());
                 }else {
@@ -141,7 +141,7 @@ public class TokenController {
 
 
         // 获取登录token
-        return ApiResult.success(tokenService.createToken(sysUser));
+        return ApiResult.success(tokenService.createToken(sysUser,openId));
     }
 
 

+ 11 - 2
usky-common/usky-common-security/src/main/java/com/usky/common/security/service/TokenService.java

@@ -34,12 +34,14 @@ public class TokenService {
 
     private final static String ACCESS_TOKEN = CacheConstants.LOGIN_TOKEN_KEY;
 
+    private final static String LOGIN_OPENID = "login_openid:";
+
     private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE;
 
     /**
      * 创建令牌
      */
-    public Map<String, Object> createToken(LoginUser loginUser) {
+    public Map<String, Object> createToken(LoginUser loginUser,String openId) {
         String token = UUIDUtils.uuid();
         Long userId = loginUser.getSysUser().getUserId();
         String userName = loginUser.getSysUser().getUserName();
@@ -59,9 +61,16 @@ public class TokenService {
 
         // 接口返回信息
         Map<String, Object> rspMap = new HashMap<String, Object>();
-        rspMap.put("access_token", JwtUtils.createToken(claimsMap));
+        String accessToken = JwtUtils.createToken(claimsMap);
+        rspMap.put("access_token", accessToken);
         rspMap.put("expires_in", expireTime);
         rspMap.put("tenantId", tenantId);
+
+        if((openId != null) && (StringUtils.isNotBlank(openId))){
+            String userKey = LOGIN_OPENID+openId;
+            redisService.set(userKey, accessToken, expireTime, TimeUnit.MINUTES);
+        }
+
         return rspMap;
     }