2014-12-02 70 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