Symfony:角色管理上的“数组到字符串转换”错误

Posted

技术标签:

【中文标题】Symfony:角色管理上的“数组到字符串转换”错误【英文标题】:Symfony: "Array to string conversion" error on Roles management 【发布时间】:2020-09-15 14:47:00 【问题描述】:

我已经开始探索 Symfony 4.4.7 的安全性。用户创建工作,我可以看到它的参数保存在数据库中:

MariaDB [(symfony)]> desc user;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(180) | NO   | UNI | NULL    |                |
| roles    | longtext     | NO   |     | NULL    |                |
| password | varchar(255) | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0.106 sec)

MariaDB [symfony]> select * from user;
+----+---------------+---------------+---------------------------------------------------------------------------------------------------+
| id | username      | roles         | password                                                                                          |
+----+---------------+---------------+---------------------------------------------------------------------------------------------------+
| 13 | administrator | ["ROLE_USER"] | $argon2id$v=19$m=65536,t=4,p=1$rDxNxYso7afyYiTaTnuL9A$kW+fMWykrEUHVzPMFvZSvPwENohmKakk9iymvJRhu98 |
+----+---------------+---------------+---------------------------------------------------------------------------------------------------+
1 row in set (0.001 sec)

但是当我尝试登录时出现错误:“注意:数组到字符串的转换” 错误指向这行代码:return array_unique($roles);

我有日志:

[2020-05-28 10:28:44] request.CRITICAL: Uncaught php Exception ErrorException: "Notice: Array to string conversion" at /var/www/symfony/src/Entity/User.php line 68 "exception":"[object] (ErrorException(code: 0): Notice: Array to string conversion at /var/www/symfony/src/Entity/User.php:68)" []

这里有什么问题?

感谢您的帮助

【问题讨论】:

【参考方案1】:

通常roles 字段存储在数据库中,如序列化数组。在您的情况下,它应该是a:1:i:0;s:9:"ROLE_USER";

【讨论】:

以上是关于Symfony:角色管理上的“数组到字符串转换”错误的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - 数组到字符串转换错误

Symfony 表单 - Choicetype - 错误“数组到字符串转换”

Symfony 1.4表单复选框数组到字符串转换

选择表单类型的数组到字符串转换错误

使用 FosUserBundle symfony2 管理多个角色

Symfony 3 - 我在管理角色方面遇到了一些困难