首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为flask-jwt生成令牌时出现错误的方法错误

为flask-jwt生成令牌时出现错误的方法错误
EN

Stack Overflow用户
提问于 2018-02-18 00:51:09
回答 1查看 400关注 0票数 0

我在我的项目中使用了flask-jwt,并且在controller.py中声明了

代码语言:javascript
复制
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模块上,我得到了这个

代码语言:javascript
复制
from flask_jwt import JWT, jwt_required
from ..controller import (
    verify,
    identity
    )
jwt = JWT(app, verify, identity)

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

代码语言:javascript
复制
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

但是使用上面的方法,我总是得到不允许的错误方法,如果我尝试使用POST,我得到的错误是解码<p>Failed to decode JSON object: No JSON object could be decoded</p>失败。

我很困惑到底是怎么回事,在办公室里类似的设置是有效的,但我是根据我所记得的来实现的。似乎我错过了这一点。

EN

回答 1

Stack Overflow用户

发布于 2018-06-15 00:18:24

回复有点晚,但我猜你的问题出在curl命令中:

代码语言:javascript
复制
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,因此:

  • 您必须发送POST请求
  • 您必须在JSON正文中添加用户名和密码

http://127.0.0.1:5000/auth --header“内容类型:应用程序/json”\--请求POST \--数据‘{“用户名”:“san@test.com”,“密码”:“测试”}’\ curl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48843639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档