为烧瓶生成令牌,给出错误的方法错误



我在项目中使用了烧瓶-JWT,我在controller.py中声明了:

def _validate_user(email, password):
    """
    validates user from db
    """
    user = Users.get_user(email)
    if check_password_hash(user.password_hash, password):
        return user
    else:
        return None

def verify(email, password):
    if not (email and password):
        return False
    valid_user = _validate_user(email, password)
    if valid_user:
        return valid_user

def identity(payload):
    user_id = payload["identity"]
    return {"userid", user_id}

,然后在API的view.py模块上我有此

from flask_jwt import JWT, jwt_required
from ..controller import (
    verify,
    identity
    )
jwt = JWT(app, verify, identity)

我正在使用电子邮件作为用户名概念,我没有询问用户的用户名,而是将用户的电子邮件地址作为用户名,我已经在models.py中定义了表:

class Users(UserMixin, db.Model):
    """ Stores the user information
    """
    __tablename__ = "users"
    userid = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String(60), index=True, unique=True, nullable=False)
    password_hash = db.Column(db.String(255), nullable=False)
    registered_on = db.Column(db.DateTime, default=datetime.utcnow())
    authenticated = db.Column(db.Boolean, default=False)
    admin = db.Column(db.Boolean, nullable=False, default=False)
curl -H "Content-Type: application/json"  -u san@test.com:test -i -X GET http://127.0.0.1:5000/auth

但是使用以上我不允许使用错误方法,如果我尝试使用帖子,我会发现错误,说无法解码<p>Failed to decode JSON object: No JSON object could be decoded</p>

我非常困惑,正在办公室的类似设置工作,但我从我的头顶上实现了。

有点迟到,但我想您的问题在curl命令中:

curl -H "Content-Type: application/json"  -u san@test.com:test -i -X GET http://127.0.0.1:5000/auth

-u选项用于指定使用HTTP Basic Auth的服务器身份验证的用户名和密码,以便将数据包装在标题中。

JWT库期望用户名和密码作为JSON,因此:

  • 您必须发送邮政请求
  • 您必须在JSON主体中添加用户名和密码

    curl --header "Content-Type: application/json" 
         --request POST 
         --data '{"username":"san@test.com","password":"test"}' 
         http://127.0.0.1:5000/auth
    

相关内容

  • 没有找到相关文章

最新更新