소스 검색

修改用户个人资料/密码同步缓存信息

RuoYi 4 년 전
부모
커밋
c2bd0ace6e

+ 2 - 1
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java

@@ -58,7 +58,8 @@ public class TokenController
         if (StringUtils.isNotNull(loginUser))
         {
             // 刷新令牌有效期
-            return R.ok(tokenService.refreshToken(loginUser));
+            tokenService.refreshToken(loginUser);
+            return R.ok();
         }
         return R.ok();
     }

+ 13 - 3
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java

@@ -4,13 +4,13 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import javax.servlet.http.HttpServletRequest;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.utils.IdUtils;
 import com.ruoyi.common.core.utils.ServletUtils;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.ip.IpUtils;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.system.api.model.LoginUser;
@@ -81,6 +81,17 @@ public class TokenService
         return null;
     }
 
+    /**
+     * 设置用户身份信息
+     */
+    public void setLoginUser(LoginUser loginUser)
+    {
+        if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken()))
+        {
+            refreshToken(loginUser);
+        }
+    }
+
     public void delLoginUser(String token)
     {
         if (StringUtils.isNotEmpty(token))
@@ -95,14 +106,13 @@ public class TokenService
      *
      * @param loginUser 登录信息
      */
-    public Long refreshToken(LoginUser loginUser)
+    public void refreshToken(LoginUser loginUser)
     {
         loginUser.setLoginTime(System.currentTimeMillis());
         loginUser.setExpireTime(loginUser.getLoginTime() + EXPIRE_TIME * MILLIS_SECOND);
         // 根据uuid将loginUser缓存
         String userKey = getTokenKey(loginUser.getToken());
         redisService.setCacheObject(userKey, loginUser, EXPIRE_TIME, TimeUnit.SECONDS);
-        return EXPIRE_TIME;
     }
 
     private String getTokenKey(String token)

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java

@@ -45,18 +45,18 @@ public class SysLogininforController extends BaseController
         return getDataTable(list);
     }
 
-    @Log(title = "登日志", businessType = BusinessType.EXPORT)
+    @Log(title = "登日志", businessType = BusinessType.EXPORT)
     @PreAuthorize(hasPermi = "system:logininfor:export")
     @PostMapping("/export")
     public void export(HttpServletResponse response, SysLogininfor logininfor) throws IOException
     {
         List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
         ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
-        util.exportExcel(response, list, "登日志");
+        util.exportExcel(response, list, "登日志");
     }
 
     @PreAuthorize(hasPermi = "system:logininfor:remove")
-    @Log(title = "登日志", businessType = BusinessType.DELETE)
+    @Log(title = "登日志", businessType = BusinessType.DELETE)
     @DeleteMapping("/{infoIds}")
     public AjaxResult remove(@PathVariable Long[] infoIds)
     {
@@ -64,7 +64,7 @@ public class SysLogininforController extends BaseController
     }
 
     @PreAuthorize(hasPermi = "system:logininfor:remove")
-    @Log(title = "登日志", businessType = BusinessType.DELETE)
+    @Log(title = "登日志", businessType = BusinessType.DELETE)
     @DeleteMapping("/clean")
     public AjaxResult clean()
     {

+ 16 - 0
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java

@@ -10,8 +10,10 @@ import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.model.LoginUser;
 import com.ruoyi.system.service.ISysUserService;
 
 /**
@@ -25,6 +27,9 @@ public class SysProfileController extends BaseController
 {
     @Autowired
     private ISysUserService userService;
+    
+    @Autowired
+    private TokenService tokenService;
 
     /**
      * 个人信息
@@ -49,6 +54,13 @@ public class SysProfileController extends BaseController
     {
         if (userService.updateUserProfile(user) > 0)
         {
+            LoginUser loginUser = tokenService.getLoginUser();
+            // 更新缓存用户信息
+            loginUser.getSysUser().setNickName(user.getNickName());
+            loginUser.getSysUser().setPhonenumber(user.getPhonenumber());
+            loginUser.getSysUser().setEmail(user.getEmail());
+            loginUser.getSysUser().setSex(user.getSex());
+            tokenService.setLoginUser(loginUser);
             return AjaxResult.success();
         }
         return AjaxResult.error("修改个人信息异常,请联系管理员");
@@ -74,6 +86,10 @@ public class SysProfileController extends BaseController
         }
         if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0)
         {
+            // 更新缓存用户密码
+            LoginUser loginUser = tokenService.getLoginUser();
+            loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(newPassword));
+            tokenService.setLoginUser(loginUser);
             return AjaxResult.success();
         }
         return AjaxResult.error("修改密码异常,请联系管理员");