【新增】输入管理员密码,登出指定账号

This commit is contained in:
MSI\letre
2025-07-10 18:02:15 +08:00
parent 59713f903d
commit 30c1a9293a
2 changed files with 34 additions and 2 deletions

View File

@@ -108,7 +108,7 @@ public class AuthController {
// 判断账号是否登录过
if (oAuth2AccessTokenDO.getUserInfo().get("username").equals(reqVO.getUsername())) {
// 说明登录了,别的地方登录了,请重新登录
return CommonResult.error(900001, "该账号已经登录");
return CommonResult.error(900001, "该账号已经登录");
}
}
return success(authService.login(reqVO));
@@ -125,7 +125,28 @@ public class AuthController {
}
return success(true);
}
@PostMapping("/refreshLogout")
@PermitAll
@TenantIgnore
@Operation(summary = "使用管理员密码强制登出用户")
public CommonResult<String> refreshLoginout(@RequestBody LoginoutVo loginoutVo) {
// 先判断管理员密码
ConfigDO config = configService.getConfigByKey("system_username_logout");
if (!config.getValue().equals(loginoutVo.getLoginOutPassword())) {
return CommonResult.error(900002, "系统管理员密码错误!");
}
Set<String> oauth2_access_token_set = stringRedisTemplate.keys("oauth2_access_token:*");
for (String oauth2_access_token : oauth2_access_token_set) {
OAuth2AccessTokenDO oAuth2AccessTokenDO = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(oauth2_access_token), OAuth2AccessTokenDO.class);
// 判断账号是否登录过
if (oAuth2AccessTokenDO.getUserInfo().get("username").equals(loginoutVo.getUsername())) {
// 说明登录了,别的地方登录了,请重新登录
stringRedisTemplate.opsForValue().getAndDelete(oauth2_access_token);
break;
}
}
return success("退出成功,请重新输入用户名密码登录!");
}
@PostMapping("/refresh-token")
@PermitAll
@Operation(summary = "刷新令牌")

View File

@@ -0,0 +1,11 @@
package pc.exam.pp.module.system.controller.admin.auth.vo;
import lombok.Data;
@Data
public class LoginoutVo {
private String loginOutPassword;
private String username;
}