2014-12-02 50 views
0

我正在構建一個由SGBD提供的角色和用戶的鑑定系統。假冒用戶的令牌錯誤

認證工作正常,現在我想實現模擬功能。

我的身份驗證用戶角色存在問題:我的數據庫中的自定義角色缺失。空置到位。

在調試模式下,我看到我的授權在選民上運行決定功能。傳遞給RoleHierarchyVoter令牌的內容只有一條:

enter image description here

(注意,長度爲2,怪...)

我也調試令牌的創作,我看到角色很好傳遞到令牌上創建:

enter image description here

我懷疑會話持久性的限制(據我瞭解令牌序列化到會話),但我對Symfony會話知之甚少...

任何想法?

回答

1

爲了讓Symfony處理模擬用戶,您需要啓用幾件事情。因爲我不知道你的配置是什麼樣子,有一個指導您完成這些步驟一個偉大的食譜文章:

http://symfony.com/doc/current/cookbook/security/impersonating_user.html

你也應該看看你是如何序列化用戶。有一個github上的問題是不同的,但沿着相同的路線問題你描述:https://github.com/symfony/symfony/issues/3085

http://symfony.com/doc/current/cookbook/security/entity_provider.html#understanding-serialize-and-how-a-user-is-saved-in-the-session

一旦你做到了這一點,如果它仍無法正常工作,嘗試建立一個監聽器security.switch_user事件並查看它是否正在觸發。如果是這樣,你應該能夠在那裏調試,看看發生了什麼。

+0

impersonnating fonction已經正常工作,但模擬用戶的令牌缺少角色。 – Fractaliste 2014-12-02 17:48:37

+0

對不起,我誤解了。有一個類似的github問題(但缺少切換用戶角色),可能需要對用戶實體/文檔中的serialize函數定義方式或用戶提供程序中的refreshUser更改報告進行一些更改。 https://github.com/symfony/symfony/issues/3085我也會嘗試一個事件監聽器,並在security.switch_user事件的開始處調試targetUser以查看角色是否存在。在調試各種模擬問題時,事件監聽器爲我節省了好幾次。 – cristian 2014-12-02 18:00:10

+0

好吧,它不是和你鏈接的Github問題一樣的問題,但是隻有序列化用戶名的想法適用於我(儘管我看到了序列化字符串中缺少的角色,沒有任何意義......)。非常感謝你! – Fractaliste 2014-12-03 09:51:27