197241张博卿第三周个人周报

197241张博卿 2026-04-06 18:52:20

 

一.个人周任务表及完成情况

任务预计花费时间实际花费时间
接口设计细化(相关页面)3h2.5h
页面逻辑完善对接2h3.5h
初步测试功能5h3h

 

二、个人工作存在问题及应对措施

1. 存在问题:

1)数据库表结构设计不合理:初期未充分考虑username唯一性校验,导致注册时可能出现脏数据,后期需额外添加索引和修改逻辑。

2)密码加密处理不当:最初尝试明文存储密码进行调试,存在严重的安全隐患,且对BCryptPasswordEncoder的使用时机理解有误。本想采用MD5

3)参数校验逻辑分散:注册表单校验(如用户名长度、密码强度)最初写在Controller中,导致代码臃肿,且返回的错误提示不统一。

2. 应对措施:

1)规范数据库设计:重新设计用户表,为username字段添加UNIQUE约束,并编写SQL变更脚本,确保数据层级的唯一性。

2)强制引入安全框架:深入学习Spring Security的PasswordEncoder机制,确立“入库即加密”的原则,删除所有明文密码测试代码。

三、本周学习内容

  1. Spring Data JPA / MyBatis-Plus 实战:深入理解了ORM框架在用户注册场景下的应用,掌握了如何定义Entity与Repository/Mapper,以及如何处理“用户名已存在”的异常捕获(DuplicateKeyException)。

  2. Spring Security 核心组件:学习了UserDetailsService的自定义实现,理解了认证流程;重点掌握了BCryptPasswordEncoder的工作原理及其防彩虹表攻击的优势。

  3. RESTful API 设计规范:学习了注册接口的标准HTTP状态码返回(如201 Created、409 Conflict),以及如何封装统一的JSON响应体(Result/ResponseDTO)。

四、个人感悟

本周的核心任务是从0到1搭建用户注册逻辑,最大的体会是:“安全”和“健壮性”必须从第一行代码开始植入,而不是事后补救

起初为了赶进度,我在本地调试时直接存明文密码,觉得“上线前再加密就行”,但在查阅资料后发现这种做法极易造成不可逆的数据泄露风险,于是立刻重构了代码,引入了PasswordEncoder。这让我意识到,开发规范不是束缚,而是保护项目的安全网。

另外,在处理“用户名重复”这个问题上,我从最初的“先查再插”(存在并发问题)优化为“直接插入捕获异常”,深刻体会到了数据库约束的重要性。虽然只是一个简单的注册接口,但要把边界情况(如空指针、特殊字符、超长输入)都考虑到,确实比想象中复杂。下周我将在此基础上继续完善登录逻辑(JWT鉴权),让整个认证体系真正跑通。

...全文
44 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

259

社区成员

发帖
与我相关
我的任务
社区描述
CUG软件工程基础学习社区
团队开发软件工程敏捷流程 高校 湖北省·武汉市
社区管理员
  • EasonBeckham
  • Lucky_Limp
  • h6ldZywoo
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧