浏览代码

修改token过期时间

Bob 2 年之前
父节点
当前提交
e48c7a9fc1

+ 1 - 1
background-gateway/src/main/java/cn/kdan/compdf/filter/AuthGlobalFilter.java

@@ -66,7 +66,7 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
         try {
             LoginUserDTO loginUserDTO = JwtConfig.checkJwt(authorization);
             // redie验证token是否过期
-            Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + loginUserDTO.getUsername());
+            Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + authorization);
             if (null == flag || !flag) {
                 ServerHttpResponse response = exchange.getResponse();
                 response.setStatusCode(HttpStatus.OK);

+ 10 - 4
background-user/src/main/java/cn/kdan/compdf/controller/v1/BackgroundUserController.java

@@ -3,11 +3,15 @@ package cn.kdan.compdf.controller.v1;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.dto.ChangePasswordDTO;
 import cn.kdan.compdf.dto.LoginDTO;
+import cn.kdan.compdf.enums.AuthEnum;
 import cn.kdan.compdf.service.BackgroundUserService;
 import cn.kdan.compdf.vo.LoginVO;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Enumeration;
+
 /**
  * @author comPDF-Kit WPH 2022-10-09
  */
@@ -30,14 +34,16 @@ public class BackgroundUserController {
     }
 
     @PostMapping("/logout")
-    public R<Void> logout() {
-        backgroundUserService.logout();
+    public R<Void> logout(HttpServletRequest request) {
+        String token = request.getHeader(AuthEnum.AUTHORIZATION);
+        backgroundUserService.logout(token);
         return R.ok();
     }
 
     @PutMapping("/changePassword")
-    public R<Void> changePassword(@Validated @RequestBody ChangePasswordDTO changePasswordDTO) {
-        backgroundUserService.changePassword(changePasswordDTO);
+    public R<Void> changePassword(@Validated @RequestBody ChangePasswordDTO changePasswordDTO, HttpServletRequest request) {
+        String token = request.getHeader(AuthEnum.AUTHORIZATION);
+        backgroundUserService.changePassword(changePasswordDTO, token);
         return R.ok();
     }
 

+ 2 - 2
background-user/src/main/java/cn/kdan/compdf/service/BackgroundUserService.java

@@ -22,9 +22,9 @@ public interface BackgroundUserService extends IService<BackgroundUser> {
 
     R<LoginVO> login(LoginDTO loginDTO);
 
-    void logout();
+    void logout(String token);
 
-    void changePassword(ChangePasswordDTO changePasswordDTO);
+    void changePassword(ChangePasswordDTO changePasswordDTO, String token);
 
     /**
      * 根据tenantID查userId

+ 7 - 5
background-user/src/main/java/cn/kdan/compdf/service/impl/BackgroundUserServiceImpl.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -58,7 +59,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
                 .tenantId(backgroundUser.getTenantId())
                 .build());
 
-        redisTemplate.opsForValue().set(AuthEnum.USER_TOKEN_REDIS + backgroundUser.getUsername(), token,2, TimeUnit.HOURS);
+        redisTemplate.opsForValue().set(AuthEnum.USER_TOKEN_REDIS + token, token,3, TimeUnit.HOURS);
 
         //更新登录用户的登陆时间
         if (backgroundUser.getFirstLoginTime() == null) {
@@ -75,12 +76,12 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
     }
 
     @Override
-    public void logout() {
-        redisTemplate.delete(AuthEnum.USER_TOKEN_REDIS + TokenUtil.getRequestHeader().getUsername());
+    public void logout(String token) {
+        redisTemplate.delete(AuthEnum.USER_TOKEN_REDIS + token);
     }
 
     @Override
-    public void changePassword(ChangePasswordDTO changePasswordDTO) {
+    public void changePassword(ChangePasswordDTO changePasswordDTO, String token) {
         // 获取当前登录用户
         LoginUserDTO requestHeader = TokenUtil.getRequestHeader();
         BackgroundUser backgroundUser = this.baseMapper.selectOne(new LambdaQueryWrapper<BackgroundUser>().eq(BackgroundUser::getId, requestHeader.getId()));
@@ -93,7 +94,8 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
         String newPassword = MD5Util.MD5Encode(changePasswordDTO.getNewPassword());
         backgroundUser.setPassword(newPassword);
         baseMapper.updateById(backgroundUser);
-        redisTemplate.delete(AuthEnum.USER_TOKEN_REDIS + backgroundUser.getUsername());
+        // 退出登录
+        redisTemplate.delete(AuthEnum.USER_TOKEN_REDIS + token);
     }
 
     @Override