正如标题所示,我在Symfony3中遇到了角色推广问题。
错误很简单:
Expression "has_role('ROLE_ADMIN')" denied access.
我用
提升了用户php bin/console fos:user:promote (etc.),
导致:
a:1:{i:0;s:10:"ROLE_ADMIN";}
在数据库中。
我还在我的控制器方法上添加了注释:
/**
* @Security("has_role('ROLE_ADMIN')")
*/
我的security.yml看起来像这样:
security:
encoders:
MR\UserBundle\Entity\User: sha512
role_hierarchy:
ROLE_ADMIN: [ROLE_USER, ROLE_MODERATOR]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
main:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main_login:
pattern: ^/login$
anonymous: true
main:
pattern: ^/
anonymous: true
provider: main
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
logout:
path: fos_user_security_logout
target: /
remember_me:
secret: %secret%
access_control:
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
不要理会可见的增量,我的复制粘贴只会产生影响。
我希望我没有错过一个明显的观点,但我更喜欢它,而不是一个没有解决的案例。
提前致谢
答案 0 :(得分:1)
@ K.F我“它在早上工作”=>我也在SF 3.X上遇到过这个问题。这不是缓存问题。只是因为我必须断开连接并重新连接以将新角色应用于我的用户。
答案 1 :(得分:0)
我知道这不是你的问题,但是在我意识到我在用户推广中犯了一个错误之后我就解决了...我没有添加ROLE_ADMIN
但只添加ADMIN
..新秀错误