使用 JWT 模块时出现错误“用户不存在错误”

Posted

技术标签:

【中文标题】使用 JWT 模块时出现错误“用户不存在错误”【英文标题】:While using JWT module i am getting an error "user does not exists error" 【发布时间】: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 上检查它,看看里面有什么。 【参考方案1】:

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

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

【讨论】:

以上是关于使用 JWT 模块时出现错误“用户不存在错误”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Go 向 APNS 发出推送请求时出现 403 禁止错误。我是不是正确创建了 JWT?

尝试使用 JWT 创建登录时出现“不是函数”错误

UnauthorizedError:身份验证时出现 jwt 格式错误的错误

使用 RSA 算法 Django Rest Framework 简单 JWT 时出现错误无法反序列化密钥数据

使用 Knock gem 生成 JWT 令牌时出现 500 内部服务器错误

尝试解码 Jwt 令牌时出现“尝试解码 Jwt 时发生错误:无法检索远程 JWK 集:”错误