Bladeren bron

用户增加访问令牌字段及登录刷新逻辑

luoshi 2 jaren geleden
bovenliggende
commit
1a21ee4fe1

+ 1 - 1
src/main/java/com/qmth/ops/api/controller/admin/UserController.java

@@ -41,7 +41,7 @@ public class UserController {
         if (!user.buildPassword(form.getPassword()).equals(user.getPassword())) {
             throw new ParameterException("密码错误");
         }
-        return new AdminSession(user, appUserService).getLoginResult();
+        return new AdminSession(userService.changeAccessToken(user), appUserService).getLoginResult();
     }
 
     @RequestMapping("/roles")

+ 1 - 1
src/main/java/com/qmth/ops/api/security/AdminSession.java

@@ -57,6 +57,6 @@ public class AdminSession implements AccessEntity {
 
     @Override
     public String getSecret() {
-        return user.buildAccessToken();
+        return user.getAccessToken();
     }
 }

+ 11 - 4
src/main/java/com/qmth/ops/biz/domain/User.java

@@ -32,6 +32,9 @@ public class User implements Serializable {
     @JsonIgnore
     private String exportSecret;
 
+    @JsonIgnore
+    private String accessToken;
+
     private Long createTime;
 
     private Long updateTime;
@@ -84,6 +87,14 @@ public class User implements Serializable {
         this.exportSecret = exportSecret;
     }
 
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
     public Long getCreateTime() {
         return createTime;
     }
@@ -105,10 +116,6 @@ public class User implements Serializable {
                 .toLowerCase();
     }
 
-    public String buildAccessToken() {
-        return ByteArray.fromString(loginName + createTime).toBase64();
-    }
-
     public boolean hasRole(Role... roles) {
         for (Role role : roles) {
             if (ArrayUtils.contains(this.role, role)) {

+ 9 - 0
src/main/java/com/qmth/ops/biz/service/UserService.java

@@ -1,6 +1,7 @@
 package com.qmth.ops.biz.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.ops.biz.dao.UserDao;
@@ -66,6 +67,14 @@ public class UserService extends ServiceImpl<UserDao, User> {
         return previous;
     }
 
+    @Transactional
+    public User changeAccessToken(User user) {
+        user.setAccessToken(RandomStringUtils.random(16, true, false));
+        userDao.update(user, new LambdaUpdateWrapper<User>().set(User::getAccessToken, user.getAccessToken())
+                .eq(User::getId, user.getId()));
+        return user;
+    }
+
     public IPage<User> query(UserQuery query) {
         return userDao.selectPage(query, query.build());
     }

+ 1 - 0
src/main/resources/script/init.sql

@@ -78,6 +78,7 @@ CREATE TABLE `user`
     `password`      varchar(64)         NOT NULL DEFAULT '',
     `role`          varchar(64)         NOT NULL DEFAULT '',
     `export_secret` varchar(64)         NOT NULL DEFAULT '',
+    `access_token`  varchar(64)                  DEFAULT NULL,
     `create_time`   bigint(20)          NOT NULL,
     `update_time`   bigint(20)          NOT NULL,
     PRIMARY KEY (`id`),