也是想尝试一下写项目日志
一、 今日工作摘要
今日主要聚焦于后端安全与架构优化,完成了用户认证模块的初步重构。工作重点从功能实现转向代码规范与健壮性提升。
二、 详细工作内容
-
实现登录功能(后端核心逻辑)
- 描述: 完成了用户登录功能的后端逻辑实现。虽然前端界面尚未开发,但通过API测试工具(如Postman)已验证接口的正确性。
- 影响: 为系统提供了用户身份识别的能力,是后续所有会议权限控制的基础。
-
重构数据传输对象(DTO)层
- 描述: 针对用户登录和注册场景,分别创建了专门的
Request和ResponseDTO对象(UserLoginRequestDTO,UserRegisterResponseDTO)。废弃了之前直接暴露数据库实体类(Entity)给控制层的做法。 - 影响: 提升了系统的安全性(避免返回密码等敏感字段)和灵活性(API接口与内部数据模型解耦)。
- 描述: 针对用户登录和注册场景,分别创建了专门的
-
优化数据校验层级
- 描述: 将请求参数的合法性校验逻辑从Service层迁移至Request层。利用
Spring Validation框架(如@NotNull,@Size,@Pattern注解)直接在DTO字段上声明校验规则。 - 影响: 符合关注点分离原则。Controller层即可拦截非法请求,使Service层逻辑更专注于核心业务,减少了冗余的校验代码。
- 描述: 将请求参数的合法性校验逻辑从Service层迁移至Request层。利用
三、 关键代码/技术点
-
技术栈: Spring Boot, Spring Validation, DTO模式。
-
代码示例(校验层迁移):
java
// 优化后:在Request DTO中声明校验规则 public class UserLoginRequestDTO { @NotBlank(message = "用户名不能为空") private String username; @NotBlank(message = "密码不能为空") @Size(min = 6, max = 20, message = "密码长度需在6-20位之间") private String password; } // Controller层启用校验 @PostMapping("/login") public Result login(@Valid @RequestBody UserLoginRequestDTO request) { // 此时已确保请求数据格式正确 return userService.login(request); }
四、 待办与计划
-
下一步任务:密码加密存储
-
目标: 替换当前可能存在的明文密码存储方式,使用哈希算法(如BCrypt)对用户密码进行加密处理。
-
具体计划:
- 引入
Spring Security Crypto模块或BCryptPasswordEncoder。 - 修改注册逻辑:存储密码前进行加密。
- 修改登录逻辑:将用户输入的密码与数据库中的密文进行匹配(使用
matches方法)。 - 注意: 如果数据库已存在明文密码,需要编写数据迁移脚本。
- 引入
-
-
后续规划:
- 开发登录/注册前端页面,并接入后端API。
- 实现基于Token(如JWT)的会话管理,替代简单的Session机制以支持分布式部署。
- 增加“记住我”功能。