表达" has_role(' ROLE_ADMIN')"拒绝访问,与管理员用户

时间:2016-07-11 16:40:42

标签: php controller fosuserbundle symfony

正如标题所示,我在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 }

不要理会可见的增量,我的复制粘贴只会产生影响。

我希望我没有错过一个明显的观点,但我更喜欢它,而不是一个没有解决的案例。

提前致谢

2 个答案:

答案 0 :(得分:1)

@ K.F我“它在早上工作”=>我也在SF 3.X上遇到过这个问题。这不是缓存问题。只是因为我必须断开连接并重新连接以将新角色应用于我的用户。

答案 1 :(得分:0)

我知道这不是你的问题,但是在我意识到我在用户推广中犯了一个错误之后我就解决了...我没有添加ROLE_ADMIN但只添加ADMIN ..新秀错误