Flask TypeError:哈希必须是unicode或字节,而不是内置函数或方法

Flask TypeError:哈希必须是unicode或字节,而不是内置函数或方法,flask,jwt,flask-restful,passlib,Flask,Jwt,Flask Restful,Passlib,我正在尝试对Flask应用程序实施JWT授权。但是,当我尝试登录时,它返回一个带有“TypeError:哈希必须是unicode或字节,而不是内置函数或方法”的“500内部服务器错误”。我会错过什么呢 这是我在models.py上的课 这是我的登录方法 下面是错误信息 到达此行时,您根本没有定义哈希: if password == User.verify_hash(data['password'], hash): 我相信这通常会引发NameError,但是有一个内置的python函数名为has

我正在尝试对Flask应用程序实施JWT授权。但是,当我尝试登录时,它返回一个带有“TypeError:哈希必须是unicode或字节,而不是内置函数或方法”的
“500内部服务器错误”
。我会错过什么呢

这是我在models.py上的课

这是我的登录方法

下面是错误信息


到达此行时,您根本没有定义哈希:

if password == User.verify_hash(data['password'], hash):
我相信这通常会引发NameError,但是有一个内置的python函数名为hash,它试图传递到verify_hash方法中()。这就是导致程序因该异常而崩溃的原因

你需要改变

if password == User.verify_hash(data['password'], hash):
为了

但是,您没有存储那些使所有加密都无用的散列

而是使用哈希函数将密码哈希存储在用户数组中,如下所示:

# Create classes to store data.
class User:
""" This class provides a way to store user data. """

    users = [
        {
            'id': 1,
            'username': u'mwinel',
            'email': u'mwinel@example.com',
            'hash': u'$pbkdf2-sha256$20000$OCeEcM55zzlnbG3tfW9tTQ$k3dRDawLaOMlR4cehJEP/2b0JUTMrtPedzLYxNQWICM'
        },
        {
            'id': 2,
            'username': u'lucy',
            'email': u'lucy@example.com',
            'password': u'$pbkdf2-sha256$20000$8D6H0Npbaw3BWGsNYSxFyA$FxkRkBXuQy8VFRX8dSdygzQ4vNlvFJl6hWZQ6LT2NIc'
        }
    ]

在这种情况下,我将如何定义哈希?
if password == User.verify_hash(data['password'], hash):
if password == User.verify_hash(data['password'], hash):
if password == User.verify_hash(data['password'], user['hash']):
# Create classes to store data.
class User:
""" This class provides a way to store user data. """

    users = [
        {
            'id': 1,
            'username': u'mwinel',
            'email': u'mwinel@example.com',
            'hash': u'$pbkdf2-sha256$20000$OCeEcM55zzlnbG3tfW9tTQ$k3dRDawLaOMlR4cehJEP/2b0JUTMrtPedzLYxNQWICM'
        },
        {
            'id': 2,
            'username': u'lucy',
            'email': u'lucy@example.com',
            'password': u'$pbkdf2-sha256$20000$8D6H0Npbaw3BWGsNYSxFyA$FxkRkBXuQy8VFRX8dSdygzQ4vNlvFJl6hWZQ6LT2NIc'
        }
    ]