bca*_*ag2 4 php doctrine mariadb symfony
Symfony 5,我User相应地编写实体代码:
https://symfony.com/doc/current/security.html#denying-access-roles-and-other-authorization
我使用 mariadb
public function getRoles(): array
{
$roles[] = $this->roles;
// guarantee every user at least has ROLE_USER
$roles[] = 'ROLE_USER';
return array_unique($roles);
}
Run Code Online (Sandbox Code Playgroud)
我手动添加了一个具有 role 的用户ROLE_ADMIN。
我不明白为什么它返回错误:
无法将数据库值“ROLE_ADMIN”转换为 Doctrine Type json
您收到该错误是因为您将值设置为无效的 JSON。如果要直接修改数据库,则应该为 JSON 类型输入有效值。在这种情况下,它会是这样的:
["ROLE_ADMIN"]
Run Code Online (Sandbox Code Playgroud)
代替:
ROLE_ADMIN
Run Code Online (Sandbox Code Playgroud)
此外,您选择的列类型不正确。虽然是MariaDb 的JSON别名,但在类型列上添加了约束。正如您链接的文档中所解释的:LONGTEXTJSON
为了确保插入有效的json文档,可以使用JSON_VALID函数作为CHECK约束。对于使用 MariaDB 10.4.3 中的 JSON 别名的类型,会自动包含此约束。
这会提醒您手动输入的数据不是有效的 JSON 文档。
绝对不需要更改getRoles()您显示的默认方法。如果您使用 JSON 类型作为属性(如错误所示),那么该方法可以完美地工作。
| 归档时间: |
|
| 查看次数: |
5979 次 |
| 最近记录: |