Masonite - TypeError: Can't convert 'Undefined' object to str implicitly

Masonite - TypeError: Can't convert 'Undefined' object to str implicitly

我正在使用 Masonite 框架,在 Masonite 1.6 中 运行 craft auth 命令后注册用户时出现错误。堆栈跟踪的结尾如下所示:

{% for i, line in enumerate(open(stack.filename)) %}

TypeError: Can't convert 'Undefined' object to str implicitly

这已在 Masonite 1.6.3 中修复。问题在于密码在使用 bcrypt 散列后没有被解码回字符串的错误。显然 MySQL 在插入数据库之前将字节转换为字符串,但 Postgres 和 SQLite 不会。

升级

修复方法是通过 运行 升级 Masonite:

pip install --upgrade -r requirements.txt

升级到最新版本(所以craft auth不会再创建有这个bug的控制器)

补丁

并通过将 RegisterController 中的第 20 行更改为:

来修补当前应用程序
password = bytes(bcrypt.hashpw(
    bytes(Request.input('password'), 'utf-8'), bcrypt.gensalt()
)).decode('utf-8')