day04-FastAPI-bossApi,登录,注册等功能实现
FastAPI BossApi 求职者登录 注册功能实现文档一、项目整体技术栈Web 框架FastAPI异步接口框架自动生成 OpenAPI 文档ORMTortoise-ORM异步 MySQL ORM终端日志可见 SQL 执行记录缓存Redis图中代码已初始化 redis 客户端db6decode_responsesTrue数据库MySQL认证方案后续可搭配 JWT 实现登录态维护项目分层架构从截图目录梳理分层思想路由 apis → schema 参数校验 → service 业务层 → models 数据库模型解耦便于维护。二、Redis 初始化截图代码片段说明作用后续登录成功后可以把JWT 令牌 / 用户会话信息存入 Redis实现登录校验、token 过期控制、单点登录等。decode_responsesTrue自动将 Redis 返回 bytes 转为字符串无需手动 decode。三、求职者登录功能实现手机号密码登录1. 层级流转流程前端请求→ apis/job_seeker_api.py 路由 → LoginMobileRequest (schema 校验请求参数) → JobSeekerService.login_by_mobile_password () → JobSeeker 模型查询数据库 → 校验手机号、密码 → 返回登录信息 / JWT2. Service 核心代码截图可见代码3. 相关配套文件说明schemas 层LoginMobileRequestPydantic 模型定义前端提交的请求体格式自动完成参数校验2.models 层JobSeeker 数据库模型⚠️ 生产环境风险提示当前示例直接明文对比密码真实项目数据库不能存储明文密码需要使用 bcrypt 对密码加盐哈希加密。3.apis 路由层 job_seeker_api.py四、求职者注册功能实现配套登录完整业务业务流程前端提交手机号、密码、姓名 → schema 校验 → service 校验手机号是否已注册 → 不存在则创建 JobSeeker 记录 → 返回注册成功1. Service 新增注册方法2. 新增注册 Schema五、登录后鉴权整体方案结合 Redis用户登录校验成功 → 服务端生成 JWT将用户ID-token键值写入 Redis设置过期时间编写 FastAPI 依赖函数get_current_user需要登录的接口添加依赖自动从请求 Header 获取 token查询 Redis 验证有效性六、现存优化点重点密码安全当前代码直接明文存储、明文比对。优化使用passlib[bcrypt]注册时加密登录时校验哈希禁止明文入库。异常统一处理代码中直接raise Exception建议自定义业务异常配合 FastAPI 全局异常中间件统一返回固定格式 JSON不要返回原生异常堆栈。请求参数增加正则校验手机号格式在 Pydantic schema 增加手机号正则验证拦截非法号码。增加限流登录接口使用 Redis 限流防止暴力破解密码限制同一手机号 1 分钟内最多 5 次尝试。环境变量解耦Redis host/port、数据库地址不要硬编码读取.env环境配置文件。七、完整调用链路汇总注册POST /job-seeker/register → schema 校验 → service 查重 → ORM 创建用户 → 响应登录POST /job-seeker/login → schema 接收手机号密码 → service 查询用户 → 校验账号密码 → 生成 token 写入 redis → 返回 token鉴权接口请求头携带 token → 依赖函数校验 Redis 中的 token → 执行业务逻辑

相关新闻