FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码

    之前我们分享了FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发。这次我们去分享实战开发《在线课程学习系统》接口开发--修改密码

 

我们梳理一下这里的逻辑

 

1.需要校验登录用户,根据登录用户,我们去校验密码

2.校验成功,我们判断新密码是否符合要求

3.存储新的密码

4.删除对应的用户的token以及错误密码存储的数据


     那么开始代码实现,对应的修改密码的pydantic。


from pydantic import BaseModel
class UserChangepassword(BaseModel):
    password:str
    newpassword:str


   crud我们使用之前的即可。本片不用新增,我们就可以按照逻辑,去实现我们的代码。

 

@usersRouter.get(path='/changepassword')
async  def changepassword(request: Request,userchangepasword:UserChangepassword,
                          user:UsernameRole= Depends(get_cure_user),
                          db: Session = Depends(get_db)):
    if userchangepasword.password==userchangepasword.newpassword:
        return reponse(code=100304,message='新旧密码不能一样',data='')
    if len(userchangepasword.newpassword)<8 or len(userchangepasword.newpassword)>16:
        return reponse(code=100303,message='新密码长度不匹配',data='')
    username=user.username
    user_name=get_user_username(db,username)
    verify=verify_password(userchangepasword.password,user_name.password)
    if verify:
        hashpassword=get_password_hash(userchangepasword.newpassword)
        user_name.update({'password':hashpassword})
        try:
            db.commit()
            db.refresh(user_name)
        except Exception as e:
            logger.exception(e)
            return reponse(code=100302,message='密码保存失败',data='')
        request.app.state.redis.delete(user.username)
        request.app.state.redis.delete(user.username+"_password")
        return reponse(code=200,message="成功",data=user.username)
    return  reponse(code=100301,message='原密码校验失败',data='')


这里的实现很多,用到了redis的相关知识。可以看之前redis操作的分享。所有的接口调试,我们放在后面的测试阶段


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
NoSQL Redis
使用slowapi对FastApi的接口进行限速
使用slowapi对FastApi的接口进行限速
2377 0
|
3月前
|
网络协议 Go
关于fastapi异步接口卡死的坑及解决
开发任务是使用fastapi去写一个对工业设备(PLC)的通信接口,方便其他后端服务与设备对接,将设备的功能抽象出来供MES调用。 通信协议是使用modbus TCP,由于fastapi是异步框架,很多以前在同步函数里开发的代码移植过来发现出现了异常,这也是不断踩坑的过程,问题解决之后也能体会到异步框架的优美与高效。
|
3月前
|
API Python
在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
38 0
|
存储 IDE API
最佳实践:通过 FastAPI APIRouter 提升开发效率
FastAPI 是一个现代的、高性能的 Python Web 框架,它提供了 APIRouter 来帮助组织和管理路由。APIRouter 是一个可用于组织和分组路由的类,使得代码结构更加清晰和可维护。本文将介绍 FastAPI APIRouter 的用法,包括实践案例以及在 IDE 编辑器中的运行步骤。
|
6月前
|
JSON API 网络架构
FastAPI+React全栈开发13 FastAPI概述
FastAPI是一个高性能的Python Web框架,以其快速编码和代码清洁性著称,减少了开发者错误。它基于Starlette(一个ASGI框架)和Pydantic(用于数据验证)。Starlette提供了WebSocket支持、中间件等功能,而Pydantic利用Python类型提示在运行时进行数据验证。类型提示允许在编译时检查变量类型,提高开发效率。FastAPI通过Pydantic创建数据模型,确保数据结构的正确性。FastAPI还支持异步I/O,利用Python 3.6+的async/await关键词和ASGI,提高性能。此外,
237 0
|
JSON API 数据格式
使用(Python)FastAPI快速构建你的后端接口服务
使用(Python)FastAPI快速构建你的后端接口服务
1032 0
|
JSON 数据安全/隐私保护 数据格式
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
|
网络安全 Windows
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
|
机器学习/深度学习 开发者 Python
FastAPI的小兄弟,开发命令行工具更给力
FastAPI的小兄弟,开发命令行工具更给力
240 0
FastAPI的小兄弟,开发命令行工具更给力
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
下一篇
无影云桌面