正如标题所暗示的那样,我在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 }
不要为可见的增量而烦恼,我的复制粘贴只是效果。
我希望我没有错过一个明显的观点,但我更喜欢它,而不是一个什么都没有解决的案例。
提前致谢
@K.F 我"早上工作" => 我在 SF 3.X 上也有这个问题。这不是缓存问题。只是因为我必须断开连接并重新连接才能将新角色应用到我的用户。
我知道
这不是你的问题,但在我意识到我在用户推广中犯了一个错误后,我解决了我的问题......我没有添加ROLE_ADMIN
,而只是ADMIN
...菜鸟失误