我的ai智能会议助手项目日志-3.29

5 阅读2分钟

也是想尝试一下写项目日志

一、 今日工作摘要

今日主要聚焦于后端安全与架构优化,完成了用户认证模块的初步重构。工作重点从功能实现转向代码规范与健壮性提升。

二、 详细工作内容

  1. 实现登录功能(后端核心逻辑)

    • 描述:  完成了用户登录功能的后端逻辑实现。虽然前端界面尚未开发,但通过API测试工具(如Postman)已验证接口的正确性。
    • 影响:  为系统提供了用户身份识别的能力,是后续所有会议权限控制的基础。
  2. 重构数据传输对象(DTO)层

    • 描述:  针对用户登录和注册场景,分别创建了专门的 Request 和 Response DTO对象( UserLoginRequestDTO, UserRegisterResponseDTO)。废弃了之前直接暴露数据库实体类(Entity)给控制层的做法。
    • 影响:  提升了系统的安全性(避免返回密码等敏感字段)和灵活性(API接口与内部数据模型解耦)。
  3. 优化数据校验层级

    • 描述:  将请求参数的合法性校验逻辑从Service层迁移至Request层。利用 Spring Validation 框架(如 @NotNull, @Size, @Pattern 注解)直接在DTO字段上声明校验规则。
    • 影响:  符合关注点分离原则。Controller层即可拦截非法请求,使Service层逻辑更专注于核心业务,减少了冗余的校验代码。

三、 关键代码/技术点

  • 技术栈:  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);
    }
    

四、 待办与计划

  1. 下一步任务:密码加密存储

    • 目标:  替换当前可能存在的明文密码存储方式,使用哈希算法(如BCrypt)对用户密码进行加密处理。

    • 具体计划:

      • 引入 Spring Security Crypto 模块或 BCryptPasswordEncoder
      • 修改注册逻辑:存储密码前进行加密。
      • 修改登录逻辑:将用户输入的密码与数据库中的密文进行匹配(使用 matches 方法)。
      • 注意:  如果数据库已存在明文密码,需要编写数据迁移脚本。
  2. 后续规划:

    • 开发登录/注册前端页面,并接入后端API。
    • 实现基于Token(如JWT)的会话管理,替代简单的Session机制以支持分布式部署。
    • 增加“记住我”功能。