我正在尝试通过facebook或userbundle在symfony2上验证我的用户
这是我到目前为止所做的事情(虽然不是我想要的但它仍然有效):
firewalls:
main:
pattern: .*
fos_facebook:
app_url: "http://apps.facebook.com/appName/"
server_url: "http://localhost/facebookApp/"
login_path: /fblogin
check_path: /fblogin_check
default_target_path: /
provider: my_fos_facebook_provider
form_login:
check_path: /login_check
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
该配置的问题在于,当用户未登录时,他被重定向到/ login(form_login),而我希望他默认重定向到Facebook身份验证
我已经尝试过简单地删除form_login,但是如果我访问/登录(这是我希望用户在facebook外登录的方式),它就不知道提交登录表单的/ login_check路由
也许chain_provider会是一个解决方案?我没有得到它的工作
答案 0 :(得分:1)
一个简单易用的mabie选项是显示登录页面中的所有登录选项(包括facebook,twitter,open id或者你想要使用的任何内容)
答案 1 :(得分:1)
连锁提供商确实是解决这个问题的方法。这是你security.yml配置的样子:
providers:
my_project.chain_provider:
chain:
providers: [fos_userbundle, my_project.facebook_provider]
fos_userbundle:
id: fos_user.user_provider.username_email
my_project.facebook_provider:
id: my_project.user_provider.facebook
当然,您需要按照here
所述定义自己的Facebook提供商答案 2 :(得分:0)
您应该为form_login添加fos_userbundle提供程序(并保留其余配置):
form_login:
provider: fos_userbundle
我没有挖太多,但我认为Symfony2在这种情况下会自动创建一个链式提供者。
答案 3 :(得分:0)
此外,您可以在event listener写下您将查看用户是直接访问/登录表单还是重定向。