symfony - Symfony:角色管理上的“数组到字符串转换”错误
问题描述
我已经开始探索 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)"} []
这里有什么问题?
谢谢你的帮助
解决方案
通常roles
字段存储在数据库中,如序列化数组。在您的情况下,它应该是a:1:{i:0;s:9:"ROLE_USER";}
.
推荐阅读
- c# - Convert.ToBase64String 为不同的字节数组返回相同的值?
- ios - Xamarin:访问本地函数内的值
- excel - 如何运行多个 VBA 代码
- typescript - googleapis 导入失败,打字稿/vue/firebase 托管
- continuous-integration - Azure DevOps 使用 Nuget 任务构建失败
- wordpress - 如何访问 WordPress.com 网站的 WP REST API?
- java - 如何从菜单外部访问选项菜单项
- c# - 使用 OpenXml SDK 删除 Excel 工作表中的表格
- angular - 需要一些关于 [formGroup] formGroupName ,[formControl] formControlName 的建议
- ansible - ansible playbook:将参数传递为 start_time = 10:00:00 UTC