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

本文涉及的产品
云数据库 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
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
|
NoSQL Redis 数据库
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情
FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情