2012-02-10 82 views
7

我正在嘗試使用FOSUserBundle更改用戶的角色。問題是:如果用戶同時登錄,他必須重新登錄以查看新角色。更改遠程用戶的角色而無需重新登錄

任何解決方案?

+0

你怎樣得到你的答案?我面臨同樣的問題... – 2012-11-15 20:27:25

回答

-1

1:您必須在防火牆配置中啓用switch_role:true。 2:接下來,您必須允許ROLE_ADMIN的角色能夠切換到另一個角色。 3:只是建立鏈接?_switch_role = userNameCanonical

它的主要工作由symfony安全fos與角色切換無關。

+0

無法正常工作......請參閱我對@Pivasyk的評論。謝謝 – Joffrey 2012-02-14 04:06:51

0

在你的控制器試試這個:

$this->get('fos_user.user_manager')->refreshUser($user); 

見FOS/UserBundle /型號/ UserManager.php

+0

謝謝你的回答,但這不是我正在尋找的。 我可以在當前會話中刷新用戶的角色。 我想要做的是刷新遠方用戶的角色。 假設我是管理員,我想更改連接用戶的角色。他必須重新登錄才能看到新的角色......我該如何避免這種情況並使其瞬間改變? 謝謝。 – Joffrey 2012-02-14 04:01:52

12

按照Security Configuration Reference,有一個always_authenticate_before_granting選項。沒有太多關於這方面的信息,但是我已經嘗試過使用從數據庫加載的自定義角色,並且它還有訣竅。它看起來每次你會發出新的請求,安全組件將重新加載角色。

所以,如果你想確保你的角色被刷新,並在用戶會話重載只是在這個選項設置爲truesecurity.yml

# app/config/security.yml 
security: 
    always_authenticate_before_granting: false 
+0

這似乎加倍在最新的symfony版本的頁面處理... :( – 2016-03-31 15:01:39

+1

它會增加數據庫IO? – tom10271 2016-08-09 07:11:34