【问题标题】:While using JWT module i am getting an error "user does not exists error"使用 JWT 模块时出现错误“用户不存在错误”
【发布时间】:2021-01-21 15:46:27
【问题描述】:

我正在学习简单的 python JWT 模块。我正在使用restfull api创建一个令牌,然后使用相同的令牌来获取数据,但不幸的是我收到一个错误“用户不存在”。

Python代码sn-p

    class User:
    def __init__(self, _id, username, password):
        self.id = _id
        self.username = username
        self.password = password

users = [
    User(1, "bob", "asdf")
]


username_mapping = {u.username: u for u in users}

userid_mapping = {u.id: u for u in users}


def authenticate(username, password):
    user = username_mapping.get(username, None)
    if user and user.password == password:
        return user


def identity(payload):
    user_id = payload["identity"]
    return username_mapping.get(user_id, None)

##使用此函数进行身份验证

app = Flask(__name__)
app.secret_key = "jose"
api = Api(app)
jwt = JWT(app,authenticate, identity)


def abort_if_item_not_exist(name):
item = next(filter(lambda x: x["name"] == name, items), None)
if item == None:
    abort(404, message = "This item does not exist")
else:
        return {"item": item}


class Item(Resource):
    @jwt_required()
    def get(self,name):
        return abort_if_item_not_exist(name)
    

【问题讨论】:

  • 你能发帖吗?请将令牌添加到问题中?并显示您创建它的代码
  • 您是否尝试通过转至 Authorisation->Type->Bearer Token 将您的令牌插入 Postman 并将您的令牌复制粘贴到“令牌”右侧框中?
  • 是的,我试过“Bearer Token”它给了我一个错误“不支持的授权类型”
  • 令牌在屏幕截图中,每次我进行身份验证时都会生成新令牌。 JWT Eyj0Exaiojkv1qilcjhbgciojiuzi1nij9.eyjlehaioje2mdiwnjy5ntcsimlhdci6mtywmja2njy1nywibmjmijoxnjaymdy2nju3lcjpzgvudgl0si6mx0.mh5go-w1a4oo3q7sxuhakxzt1wwykf1t1myk8x2x8sw span>
  • 我已经看到了截图,但是我无法通过仅仅看它来解码我脑海中的令牌,我想在jwt.io 上检查它,看看里面有什么。

标签: python authentication jwt token tokenize


【解决方案1】:

我找到了答案,感谢jsp,他指出了一个网站。我分析并获得了有效载荷身份ID。然后我意识到我得到了一个 ID,我正在将它与错误的值进行比较。这只是我的错字。

def identity(payload):
user_id = payload["identity"]
return userid_mapping.get(user_id, None) # This needs to be changed

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2014-10-22
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多