Symfony2:使用两个不同的用户提供程序登录网站时无法模拟用户
Posted
技术标签:
【中文标题】Symfony2:使用两个不同的用户提供程序登录网站时无法模拟用户【英文标题】:Symfony2: unable to impersonate user when website log-in using two different user providers 【发布时间】:2012-10-16 14:07:18 【问题描述】:在我的网站中,用户可以使用简单帐户(在我的网站中创建,配置 MY_OWN_USER 提供程序,通过电子邮件选择用户)或使用 facebook 登录(通过 fosfacebook bundle 集成)登录。
当我试图模拟用户时(附加链接'...?_switch_user=demo@demo.com',如Symfony2 documentation 中所述)Symfony2 记录此类警告:
security.WARNING:切换用户失败:“用户未在 facebook 上进行身份验证”
我已经检查了 Symfony\Component\Security\Http\Firewall\SwitchUserListener 并且看起来默认情况下它不是 MY_OWN_USER 提供程序,而是 fosfacebook 提供程序,它试图通过 facebook_id 选择用户(如果我附加链接使用 '...?_switch_user=FACEBOOK_ID' - 切换用户正常工作!)
那么如何让 SwitchUserListener 获得 MY_OWN_USER 提供者,该提供者通过电子邮件而不是 facebook id 选择用户?
【问题讨论】:
当然我可以尝试将 SwitchUserListener 更改为它会通过电子邮件(而不是用户名)选择用户,但也许还有其他方法无需更改 Symfony2 源代码 :) 【参考方案1】:在security.yml
的防火墙配置中配置模拟时,您可以指定应使用哪个提供程序来查找被模拟的用户 (ref)。例如:
switch_user:
provider: MY_OWN_USER
希望这会有所帮助!
【讨论】:
以上是关于Symfony2:使用两个不同的用户提供程序登录网站时无法模拟用户的主要内容,如果未能解决你的问题,请参考以下文章
使用 FOSUserBundle 自动登录 Symfony2 [重复]