如何在 FOS 中将角色类型更改为 varchar

How can i change the role type as a varchar in FOS

我在我的 Symfony2 项目中使用 FosUserBundle,我想知道如何将角色更改为文本而不是数组(我的意思是我的角色是 varchar 而不是 table 在我的数据库中),这可能吗?

在抽象class用户中我已经将类型更改为字符串。

/**
 * @var string
 */
protected $roles;

这是我的 security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

role_hierarchy:
    ROlE_Client:      ROLE_Client
    ROlE_Agent:       ROLE_Agent
    ROLE_SUPER_ADMIN: ROLE_SUPER_ADMIN

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            #always_use_default_target_path: false
            #default_target_path:            /affichage
        logout:       true
        anonymous:    true

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/affichage, role: ROLE_Agent }

您必须通过以下方式更改您的 role_hierarchy

role_hierarchy:
    ROLE_CLIENT:      ROLE_USER
    ROLE_AGENT:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

使用大写尊重规范化。

解释为什么会这样: 键是角色的名称,值是继承的内容

示例:

ROLE_AGENT: ROLE_USER #An agent has agent's rights + user's rights