Symfony: ошибка «Преобразование массива в строку» при управлении ролями - PullRequest
0 голосов
/ 28 мая 2020

Я начал изучать безопасность на 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 Ответ

0 голосов
/ 28 мая 2020

Обычно roles поле хранится в базе данных как сериализованный массив. В вашем случае это должно быть a:1:{i:0;s:9:"ROLE_USER";}.

...