表达式“has_role('ROLE_ADMIN')”拒绝访问,管理员用户


Expression "has_role('ROLE_ADMIN')" denied access, with an Admin User

正如标题所暗示的那样,我在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...菜鸟失误