我使用Masonite框架,在Masonite 1.6中运行craft auth
命令后注册用户时出错。堆栈跟踪的结尾如下所示:
{% for i, line in enumerate(open(stack.filename)) %}
TypeError: Can't convert 'Undefined' object to str implicitly
答案 0 :(得分:1)
这已在Masonite 1.6.3中修复。问题是,在使用bcrypt进行哈希处理后,密码没有被解码回字符串。显然MySQL在插入数据库之前将字节转换为字符串,但Postgres和SQLite没有。
修复方法是通过运行来升级Masonite:
pip install --upgrade -r requirements.txt
升级到最新版本(因此craft auth
不会再次创建带有此错误的控制器)
并通过将RegisterController中的〜第20行更改为:
来修补当前应用程序password = bytes(bcrypt.hashpw(
bytes(Request.input('password'), 'utf-8'), bcrypt.gensalt()
)).decode('utf-8')