" TypeError:hashpw()参数1必须是str,而不是bytes"尝试使用flask-security

时间:2015-05-26 11:05:18

标签: python flask bcrypt flask-security

我尝试使用Enferno framework创建一个小瓶子应用程序,但是当我尝试注册用户时,我收到一个似乎由passlib库生成的错误。我无法理解我做过的事情,或者图书馆本身是否有错误。

这里是完整的追溯:

Traceback (most recent call last):
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1836, in __call__
        return self.wsgi_app(environ, start_response)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app
        response = self.make_response(self.handle_exception(e))
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1403, in handle_exception
        reraise(exc_type, exc_value, tb)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
        raise value
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1817, in wsgi_app
        response = self.full_dispatch_request()
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1477, in full_dispatch_request
        rv = self.handle_user_exception(e)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1381, in handle_user_exception
        reraise(exc_type, exc_value, tb)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
        raise value
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1475, in full_dispatch_request
        rv = self.dispatch_request()
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_debugtoolbar/__init__.py", line 125, in dispatch_request
        return view_func(**req.view_args)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/decorators.py", line 205, in wrapper
        return f(*args, **kwargs)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/views.py", line 117, in register
        user = register_user(**form.to_dict())
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/registerable.py", line 28, in register_user
        kwargs['password'] = encrypt_password(kwargs['password'])
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/utils.py", line 151, in encrypt_password
        return _pwd_context.encrypt(signed)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/context.py", line 2495, in encrypt
        return self._get_record(scheme, category).encrypt(secret, **kwds)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/utils/handlers.py", line 558, in encrypt
        self.checksum = self._calc_checksum(secret)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/handlers/bcrypt.py", line 285, in _calc_checksum
        return self._calc_checksum_backend(secret)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/utils/handlers.py", line 1458, in _calc_checksum_backend
        return self._calc_checksum_backend(secret)
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/handlers/bcrypt.py", line 333, in _calc_checksum_pybcrypt
        hash = _bcrypt.hashpw(secret, config)
TypeError: hashpw() argument 1 must be str, not bytes

1 个答案:

答案 0 :(得分:1)

我刚碰到这个。事实证明,我已经在我的virtualenv中安装了bcryptpython-bcryptpasslib.hash.bcrypt会检查bcrypt上存在哪个版本。删除python-bcrypt后,我就可以停止抛出此错误。