diff --git a/src/main/java/com/kexue/skills/controller/LoginController.java b/src/main/java/com/kexue/skills/controller/LoginController.java index 925606a..9b81a53 100644 --- a/src/main/java/com/kexue/skills/controller/LoginController.java +++ b/src/main/java/com/kexue/skills/controller/LoginController.java @@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import org.redisson.api.RedissonClient; /** * (SysUser)表控制层 @@ -28,6 +29,12 @@ public class LoginController { */ @Resource private SysUserService sysUserService; + + /** + * Redisson客户端 + */ + @Resource + private RedissonClient redissonClient; /** * 用户登录 @@ -50,9 +57,24 @@ public class LoginController { @PostMapping("/accountLogout") @Operation(summary = "用户登出", description = "用户登出") public CommonResult logout() { - // 使用Sa-Token登出 - cn.dev33.satoken.stp.StpUtil.logout(); - return CommonResult.success("登出成功"); + try { + // 获取当前用户的token + String token = cn.dev33.satoken.stp.StpUtil.getTokenValue(); + + // 使用Sa-Token登出 + cn.dev33.satoken.stp.StpUtil.logout(); + + // 从Redis中删除用户信息 + if (token != null && !token.isEmpty()) { + redissonClient.getBucket("loginUser:" + token).delete(); + } + + return CommonResult.success("登出成功"); + } catch (Exception e) { + // 如果获取token失败,仍然执行登出操作 + cn.dev33.satoken.stp.StpUtil.logout(); + return CommonResult.success("登出成功"); + } } /** diff --git a/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java b/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java index 3ee9e0b..cbfda48 100644 --- a/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java @@ -652,6 +652,12 @@ public class SysUserServiceImpl implements SysUserService { // 参数校验 Assert.notBlank(phone, "手机号不能为空"); + // 验证手机号格式 + String phoneRegex = "^1[3-9\\d{9}$"; + if (!phone.matches(phoneRegex)) { + Assert.isTrue(false, "手机号格式不正确"); + } + // 生成6位随机验证码 String code = generateSmsCode();