【问题标题】:Expression "has_role('ROLE_ADMIN')" denied access, with an Admin User表达式“has_role('ROLE_ADMIN')”拒绝访问,管理员用户
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 这不是答案,最好删除这个并使用 cmets。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2011-07-31
    • 2013-04-29
    相关资源
    最近更新 更多