请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

httbasicauth 验证问题

  File "E:\ApplicationData\pyenvs\FlaskBaseDemo-Nuy1F8Rf\lib\site-packages\flask_httpauth.py", line 136, in authenticate

    return self.verify_password_callback(username, client_password)

TypeError: add() takes 0 positional arguments but 2 were given


发现它根本不走,下面的这个方法
@auth.verify_password
def verify_password_token(token, password):

正在回答 回答被采纳积分+3

3回答

7七月 2018-07-05 08:20:34

直接下源代码 对比下吧

0 回复 有任何疑惑可以回复我~
提问者 NiRoa 2018-07-03 11:15:58

这是token_auth代码

@auth.verify_password
def verify_password_token(token, password):
   # token
   # HTTP 账号密码
   # header key:value
   # account  qiyue
   # 123456
   # key=Authorization
   # value =basic base64(qiyue:123456)
   user_info = verify_auth_token(token)
   if not user_info:
       return False
   else:
       # request
       g.user = user_info
       return True

这是视图函数代码:

@api.route('/changepwd', methods=['POST'])
@auth.login_required
def change_password():
   """
   修改密码
   :return:
   """
   uid = g.user.id
   form = ChangePasswordForm().validate_for_api()
   success = User.change_password(uid, form.old_password.data, form.new_password1.data)
   if success:
       return Success(msg='你的密码已经更新')
   else:
       return Forbidden(msg='密码更新失败')


我在httpauth代码打了断点,感觉走到了这步? 但是在 token_auth 中@auth.verify_password
def verify_password_token(token, password): 打断点就是不进去 ,

https://img1.sycdn.imooc.com//szimg/5b3ae8de0001205111500267.jpg

之后走到这里了,调用这个 认证方法判断,
https://img1.sycdn.imooc.com//szimg/5b3ae9d5000168d014420374.jpg

直接就走到返回视图函数这里了,

https://img1.sycdn.imooc.com//szimg/5b3aea340001bef609650173.jpg

这个搞了老久了,感觉就快还要放弃了,找不到问题所在啊

0 回复 有任何疑惑可以回复我~
7七月 2018-07-01 00:15:40

你这个报错了啊,看看代码

0 回复 有任何疑惑可以回复我~
  • 提问者 NiRoa #1
    这是token_auth代码
    
    @auth.verify_password
    def verify_password_token(token, password):
       # token
       # HTTP 账号密码
       # header key:value
       # account  qiyue
       # 123456
       # key=Authorization
       # value =basic base64(qiyue:123456)
       user_info = verify_auth_token(token)
       if not user_info:
           return False
       else:
           # request
           g.user = user_info
           return True
    
    这是视图函数代码:
    
    @api.route('/changepwd', methods=['POST'])
    @auth.login_required
    def change_password():
       """
       修改密码
       :return:
       """
       uid = g.user.id
       form = ChangePasswordForm().validate_for_api()
       success = User.change_password(uid, form.old_password.data, form.new_password1.data)
       if success:
           return Success(msg='你的密码已经更新')
       else:
           return Forbidden(msg='密码更新失败')
    
    
    
    我在httpauth代码打了断点,感觉走到了这步? 但是在 token_auth 中@auth.verify_password
    def verify_password_token(token, password): 打断点就是不进去 ,
    
    //img1.sycdn.imooc.com//szimg/5b3ae8de0001205111500267.jpg
    
    之后走到这里了,调用这个 认证方法判断,
    //img1.sycdn.imooc.com//szimg/5b3ae9d5000168d014420374.jpg
    
    直接就走到返回视图函数这里了,
    
    //img1.sycdn.imooc.com//szimg/5b3aea340001bef609650173.jpg
    
    这个搞了老久了,感觉就快还要放弃了,找不到问题所在啊
    回复 有任何疑惑可以回复我~ 2018-07-03 11:18:31

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信