这真的让我很困扰。我在哪里犯了错误或如何解决此错误。
我收到一个错误,InvalidTypeException in ArrayNode.php line 267:
- Invalid type for path "security.providers.in_memory.memory.users.admin:{ password". Expected array, but got string
我正在从symfony食谱中实现控制器。这是我的security.yml
security:
encoders:
Symfony'Component'Security'Core'User'User: plaintext
Leo'CLUBBundle'Entity'User: bcrypt
role_hierarchy:
ROLE_ADMIN: [ROLE_USER]
providers:
chain_provider:
chain:
providers: [in_memory, user_db]
in_memory:
memory:
users:
admin:{ password: adminpass, roles:ROLE_ADMIN}
user_db:
entity:{ class: LeoCLUBBundle:User, property:username }
firewalls:
main:
pattern: /.*
form_login:
login_path: /login_path
check_path: /login_check
default_target_path: /
logout:
path: /logout
target: /
security: true
anonymous: true
access_control:
- { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /user, roles: ROLE_ADMIN }
- { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }
空间和意图在Yaml中非常重要,所以要改变
admin:{ password: adminpass, roles:ROLE_ADMIN}
自
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
也改变
entity:{ class: LeoCLUBBundle:User, property:username }
自
entity: { class: LeoCLUBBundle:User, property: username }
手动修改 composer.json 和 composer.lock 文件后,我遇到了同样的问题。
修改后,尝试使用"作曲家需要symfony/mailer"安装邮件程序,我在"您的要求无法解析为一组可安装的软件包"下出现许多错误。":
问题1- 根 composer.json 需要 symfony/asset 6.0.*
,找到 symfony/asset[v6.0.0, v6.0.1],但该软件包通过部分更新修复到 v4.4.27(锁定文件版本),并且该版本不匹配。确保将其列为更新命令的参数。
问题2- 根 composer.json 需要 symfony/console 6.0.*
,找到 symfony/console[v6.0.0, v6.0.1, v6.0.2],但该软件包通过部分更新修复到 v4.4.36(锁定文件版本),并且该版本不匹配。确保将其列为更新命令的参数。
问题3.....等等"
为了解决这个问题,我不得不进一步修改composer.json
和composer.lock
,直到" composer update "symfony/*" -W
"工作正常,除了"security.firewalls.main"下的消息"无法识别的选项"匿名"。
我发现security.yaml
文件被更改了:不是"懒惰:真",而是"匿名:懒惰"。
恢复为"懒惰:真",不再有错误消息。