Symfony用户角色继承

时间:2014-10-09 13:45:00

标签: symfony inheritance fosuserbundle roles

我目前正在使用symfony(使用FOSUserBundle)的系统,我在role_hierarchy中有多个角色,我想利用继承。

我有:role_hierarchy:

role_hierarchy:
    ROLE_MEMBER:     ROLE_USER
    ROLE_MONITOR:    ROLE_MEMBER
    ROLE_SUPERVISOR:  ROLE_MONITOR
    ROLE_MANAGER:     ROLE_SUPERVISOR
    ROLE_ADMIN:       ROLE_MEMBER
    ROLE_SUPER_ADMIN: [ROLE_MANAGER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

如果我以ROLE_SUPERVISOR登录用户并且我打电话:

$this->get('security.context')->isGranted('ROLE_MONITOR')

我希望这会返回true,但它当前返回false。

如果不向每个用户添加每个角色,是否可以继承角色,这样如果我调用isGranted,它将检查所有其他"相关角色"在层次结构内?如果是的话,怎么样?

1 个答案:

答案 0 :(得分:2)

你需要把[]放在你的角色周围。这对我来说是预期的:

role_hierarchy:
    ROLE_USER:           []
    ROLE_STAFF:          [ROLE_USER]

    ROLE_SCORE_ENTRY:    [ROLE_USER, ROLE_STAFF]
    ROLE_SCORE_ADMIN:    [ROLE_USER, ROLE_STAFF, ROLE_SCORE_ENTRY]

    ROLE_ASSIGNOR:       [ROLE_STAFF]
    ROLE_ASSIGNOR_KAC:   [ROLE_ASSIGNOR]
    ROLE_ASSIGNOR_CORE:  [ROLE_ASSIGNOR]
    ROLE_ASSIGNOR_EXTRA: [ROLE_ASSIGNOR]

    ROLE_ASSIGNOR_ADMIN: 
      - ROLE_ASSIGNOR
      - ROLE_ASSIGNOR_KAC
      - ROLE_ASSIGNOR_CORE
      - ROLE_ASSIGNOR_EXTRA

    ROLE_DEVELOPER: [ROLE_USER]

    ROLE_ADMIN:       
      - ROLE_STAFF
      - ROLE_ASSIGNOR_ADMIN 
      - ROLE_SCORE_ADMIN
      - ROLE_ALLOWED_TO_SWITCH

    ROLE_SUPER_ADMIN: 
      - ROLE_ADMIN
      - ROLE_DEVELOPER
      - ROLE_ALLOWED_TO_SWITCH