소스 검색

redis中删除全局session

wanghaicheng 5 년 전
부모
커밋
f6c0935797

+ 3 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/user/controller/LoginController.java

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -269,8 +270,8 @@ public class LoginController {
      */
     @PostMapping("/resetPassword")
     @ResponseBody
-    public RestResponse resetPassword(@RequestBody UserRequest userRequest) {
-        return loginService.resetPassword(userRequest);
+    public RestResponse resetPassword(@RequestBody UserRequest userRequest, HttpSession session) {
+        return loginService.resetPassword(userRequest, session);
     }
 
     /**

+ 3 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/ILoginService.java

@@ -4,6 +4,7 @@ import cn.com.ty.lift.system.user.dao.entity.model.UserRequest;
 import cn.com.xwy.boot.web.dto.RestResponse;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 
 public interface ILoginService {
 
@@ -30,7 +31,7 @@ public interface ILoginService {
      * @description 重置密码
      * @date 2019-12-10
      */
-    RestResponse resetPassword(UserRequest userRequest);
+    RestResponse resetPassword(UserRequest userRequest, HttpSession session);
 
     /**
      * @param
@@ -63,7 +64,7 @@ public interface ILoginService {
      * @description 在redis中置空用户信息
      * @date 2020/4/22 6:46 下午
      */
-    void blankingUserInfoIntoRedis(String mobile, String token);
+    void blankingUserInfoIntoRedis(String mobile, String token, HttpSession session);
 
     /**
      * @param request 请求数据

+ 7 - 3
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java

@@ -20,6 +20,7 @@ import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.session.data.redis.RedisOperationsSessionRepository;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -38,6 +39,8 @@ import java.util.concurrent.TimeUnit;
  */
 @Service
 public class LoginService implements ILoginService {
+    @Resource
+    private RedisOperationsSessionRepository sessionRepository;
 
     @Resource
     private IUserService userService;
@@ -165,7 +168,7 @@ public class LoginService implements ILoginService {
     }
 
     @Override
-    public RestResponse resetPassword(UserRequest userRequest) {
+    public RestResponse resetPassword(UserRequest userRequest, HttpSession session) {
         RestResponse verifyResult = verifySmsCode(userRequest.getMobile(), userRequest.getInputSmsCode());
         //如果结果不为空说明校验未通过
         if (verifyResult != null) {
@@ -182,7 +185,7 @@ public class LoginService implements ILoginService {
         userAccount.setPassword(newPassword);
         userAccountService.updateById(userAccount);
         redisTemplate.delete(userRequest.getToken());
-        this.blankingUserInfoIntoRedis(userRequest.getMobile(), userRequest.getToken());
+        this.blankingUserInfoIntoRedis(userRequest.getMobile(), userRequest.getToken(),session);
         return RestResponse.success(null, ApiConstants.RESULT_SUCCESS, "重置密码成功");
     }
 
@@ -278,8 +281,9 @@ public class LoginService implements ILoginService {
     }
 
     @Override
-    public void blankingUserInfoIntoRedis(String mobile, String token) {
+    public void blankingUserInfoIntoRedis(String mobile, String token, HttpSession session) {
         String mobileUserInfo = mobile + ApiConstants.UserConstants.USER_INFO_MOBILE;
+        sessionRepository.deleteById(session.getId());
         redisTemplate.delete(token);
         redisTemplate.delete(mobileUserInfo + ApiConstants.ACCESS_TYPE_PC);
         redisTemplate.delete(mobileUserInfo + ApiConstants.ACCESS_TYPE_APP);