【发布时间】:2016-07-11 16:40:42
【问题描述】:
正如标题所示,我在 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 }
不要打扰可见的增量,我的复制粘贴只是一个效果。
我希望我没有错过一个明显的问题,但我更喜欢它而不是一个没有解决的案例。
提前致谢
【问题讨论】:
-
在您的控制器中指定为
@Security("has_role('ROLE_ADMIN')")的注释的路径是什么? -
它今天早上工作了..我想涉及到缓存,即使昨天晚上清除它也没有解决问题..对不起......那个......?我不知道可以从中得出什么结论。度过美好的一天
标签: php controller fosuserbundle symfony