• 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操作的分享。所有的接口调试,我们放在后面的测试阶段

  • 相关阅读:
    爬虫之爬取淘宝主题市场主要产品信息
    Linux内核11-定时器和时间管理
    UNIX8-进程控制
    UNIX7-进程环境
    Unix3-文件I/O接口
    Linux进程-打开的文件
    递归与二叉树_leetcode230
    递归与二叉树_leetcode235
    递归与二叉树_leetcode226
    递归与二叉树_leetcode222
  • 原文地址:https://www.cnblogs.com/leiziv5/p/15941941.html
Copyright © 2020-2023  润新知