-1
我正在使用FosUserBundle,在我的Symfony2項目中,我想知道如何將角色更改爲文本而不是數組(我的意思是我擁有角色作爲varchar而不是我的數據庫中的表),這可能嗎?我如何將角色類型更改爲FOS中的varchar
在抽象類用戶我已經改變類型爲字符串。
/**
* @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 }
只是不這樣做!首先它不是通過更改文檔註釋,而是改變實體中的類型。你會打破symfony的所有安全方法 –
只要你從'getRoles()'返回一個數組,你就沒有必要破壞安全性,否則你會好('return array($ this-> roles); '會很容易)。爲什麼你想改變字段類型?你背後有什麼想法? – qooplmao
我有兩種類型的角色(代理和客戶端),如果我註冊一個用戶作爲代理,我將[ROLE_AGENT,ROLE_USER],否則,當我使用access_control時: - {path:^/affichage,role:ROLE_Agent}它不能正常工作..它給我的訪問被拒絕 – Marooweb