refactor(auth):重构认证模块并增强验证机制
- 重命名并调整 DTO 类结构,将 LoginRequest 和 RegisterRequest 迁移至 request 包- 引入 AuthLoginRequest 和 AuthRegisterRequest 并添加字段验证注解 - 更新 AuthController 使用新的 DTO 并增加 @Valid 参数校验 - 修改 AuthService 接口及实现类,接收 User 实体而非 RegisterRequest - 添加全局异常处理器 GlobalExceptionHandler 处理参数校验和业务异常 - 新增 ErrorCode 枚举统一管理错误码和消息 - 引入 UserConverter 组件用于 DTO 到实体的转换 - 增强用户注册与登录逻辑,完善异常处理和错误提示 - 移除旧的 BadCredentialsException 捕获逻辑 - 调整 pom.xml 添加 spring-boot-starter-validation 和相关依赖 - 更新 User 实体类,添加完整字段映射和角色关联配置 - 新增 UserInfoService 及其实现,提供用户管理和密码设置功能 -优化 UserMapper 查询方法,支持联表查询用户及其角色信息 - 删除无用的 HLSController 控制器 - 完善 ImageController 文件上传逻辑并更新响应结构 - 添加用户名和密码格式验证工具类 PasswordValidate 和 UsernameValidate
This commit is contained in:
@@ -20,6 +20,10 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus</artifactId>
|
||||
@@ -29,5 +33,11 @@
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.validation</groupId>
|
||||
<artifactId>jakarta.validation-api</artifactId>
|
||||
<version>3.0.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -1,21 +1,57 @@
|
||||
package cn.nopj.chaos_api.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@TableName("t_user")
|
||||
public class User implements Serializable {
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String username;
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
private String password;
|
||||
/**
|
||||
* 账号是否启用
|
||||
*/
|
||||
private Boolean enabled;
|
||||
/**
|
||||
* 账号是否未过期
|
||||
*/
|
||||
private Boolean accountNonExpired;
|
||||
/**
|
||||
* 密码是否未过期
|
||||
*/
|
||||
private Boolean credentialsNonExpired;
|
||||
/**
|
||||
* 账号是否未锁定
|
||||
*/
|
||||
private Boolean accountNonLocked;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<Role> roles;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package cn.nopj.chaos_api.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 登录请求参数
|
||||
*/
|
||||
@Data
|
||||
public class LoginRequest {
|
||||
private String username;
|
||||
private String password;
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package cn.nopj.chaos_api.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 注册请求参数
|
||||
*/
|
||||
@Data
|
||||
public class RegisterRequest {
|
||||
private String username;
|
||||
private String password;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package cn.nopj.chaos_api.dto.request;
|
||||
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 登录请求参数
|
||||
*/
|
||||
@Data
|
||||
public class AuthLoginRequest {
|
||||
@Pattern(regexp = "^[a-zA-Z0-9_-]{5,16}$", message = "用户名需为5-16位字母、数字、_或-")
|
||||
private String username;
|
||||
@Pattern(regexp = "^.{8,16}$", message = "密码长度需为8-16位")
|
||||
private String password;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.nopj.chaos_api.dto.request;
|
||||
|
||||
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 注册请求参数
|
||||
*/
|
||||
@Data
|
||||
public class AuthRegisterRequest {
|
||||
@Pattern(regexp = "^[a-zA-Z0-9_-]{5,16}$", message = "用户名需为5-16位字母、数字、_或-")
|
||||
private String username;
|
||||
//密码不低于8位 不高于16位不限制字符
|
||||
@Pattern(regexp = "^.{8,16}$", message = "密码长度需为8-16位")
|
||||
private String password;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.nopj.chaos_api.dto.request;
|
||||
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SetUserPasswordRequest {
|
||||
//用户id为数字Long类型
|
||||
@Pattern(regexp = "^[0-9]+$", message = "用户id格式错误")
|
||||
private String userId;
|
||||
@Pattern(regexp = "^.{8,16}$", message = "密码长度需为8-16位")
|
||||
private String password;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.nopj.chaos_api.dto;
|
||||
package cn.nopj.chaos_api.dto.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package cn.nopj.chaos_api.dto.response;
|
||||
|
||||
import lombok.Data;
|
||||
@Data
|
||||
public class RoleResponse {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package cn.nopj.chaos_api.dto.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UserinfoResponse {
|
||||
private Long id;
|
||||
private String username;
|
||||
private List<RoleResponse> roles;
|
||||
}
|
||||
Reference in New Issue
Block a user