From bf541e87676aaf0f773b9edec54a8248618e06ea Mon Sep 17 00:00:00 2001 From: ZhengJie <201507802@qq.com> Date: Sat, 1 Aug 2020 14:07:45 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BB=A3=E7=A0=81=E5=AE=8C=E5=96=84](v2.5):?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E7=A6=81=E7=94=A8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8E=E7=94=A8=E6=88=B7=E8=BF=98=E5=8F=AF=E4=BB=A5=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close https://github.com/elunez/eladmin/issues/443 --- .../security/service/OnlineUserService.java | 14 ++++++++++++++ .../security/service/UserDetailsServiceImpl.java | 3 ++- .../system/service/impl/UserServiceImpl.java | 6 ++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index c1fd9c5a..e9eeb8be 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -21,6 +21,7 @@ import me.zhengjie.modules.security.service.dto.JwtUserDto; import me.zhengjie.modules.security.service.dto.OnlineUserDto; import me.zhengjie.utils.*; import org.springframework.data.domain.Pageable; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -173,4 +174,17 @@ public class OnlineUserService { } } + /** + * 根据用户名强退用户 + * @param username / + */ + @Async + public void kickOutForUsername(String username) { + List onlineUsers = getAll(username); + for (OnlineUserDto onlineUser : onlineUsers) { + if (onlineUser.getUserName().equals(username)) { + kickOut(onlineUser.getKey()); + } + } + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 6ea954d6..d9aaf93f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -24,6 +24,7 @@ import me.zhengjie.modules.system.service.DataService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.UserDto; +import org.springframework.http.HttpStatus; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; @@ -72,7 +73,7 @@ public class UserDetailsServiceImpl implements UserDetailsService { throw new UsernameNotFoundException(""); } else { if (!user.getEnabled()) { - throw new BadRequestException("账号未激活"); + throw new BadRequestException("账号未激活!"); } jwtUserDto = new JwtUserDto( user, diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index eca89aac..84b44ec8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -17,6 +17,7 @@ package me.zhengjie.modules.system.service.impl; import lombok.RequiredArgsConstructor; import me.zhengjie.config.FileProperties; +import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.modules.security.service.UserCacheClean; import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.EntityExistException; @@ -58,6 +59,7 @@ public class UserServiceImpl implements UserService { private final FileProperties properties; private final RedisUtils redisUtils; private final UserCacheClean userCacheClean; + private final OnlineUserService onlineUserService; @Override public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { @@ -117,6 +119,10 @@ public class UserServiceImpl implements UserService { if(!resources.getUsername().equals(user.getUsername())){ redisUtils.del("user::username:" + user.getUsername()); } + // 如果用户被禁用,则清除用户登录信息 + if(!resources.getEnabled()){ + onlineUserService.kickOutForUsername(resources.getUsername()); + } user.setUsername(resources.getUsername()); user.setEmail(resources.getEmail()); user.setEnabled(resources.getEnabled());