我正在制作登录页面和注册页面
使用FosUserBundle和HWIOAuthBundle + Symfony2.4使用composer
我想要的行为是:
在登录页面上 - >
users can login using Google, Facebook or Login Through a Form
注册页面上的- >
users can Register using Google, Facebook or Register Through a Form
关注此帖子http://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/
作者建议覆盖HWIOAuthBundles Login.html.twg,我将其覆盖
app / Resources / HWIOAuthBundle / views / Connect
并插入FosUserBundle表格树枝代码(http://pastebin.com/8FS3Smta)
但是当我尝试这样时它会出错:
HWIOAuthBundle中不存在变量“last_username”:第15行的Connect:login.html.twig
这意味着HWIOauthBundle没有使用/包括FOSUserbundle
根据我的理解,你只能扩展一个BaseBundle 问题:任何帮助将不胜感激
---编辑---
我能够结合使用2种登录方法(请参阅下面的m2mdas答案)
但仍然无法结合2种注册方法
解决方法
如果我输入以下网址,它的工作原理
.... app_dev.php / secure_area /连接/谷歌
所以我需要创建一个到URL的自定义路由
我试过了
my_registration:
path: /secure_area/registration
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /secure_area/connect/google
permanent: true
但这需要我
.... app_dev.php / secure_area / connect
而不是
.... app_dev.php / secure_area /连接/谷歌
如预期的那样 TIA
答案 0 :(得分:4)
好吧,我似乎没有解释好:)我实际上是指你应该复制/修改部分
{% for owner in hwi_oauth_resource_owners() %}
<a href="{{ hwi_oauth_login_url(owner) }}">{{ owner | trans({}, 'HWIOAuthBundle') }}</a> <br />
{% endfor %}
HWIOAuthBundle:Connect:login.html.twig的并将其放在http://yoursite.com/login
显示的FOSUserBundle:Security:login.html.twig文件中。因此,当前的登录网址为http://yoursite.com/login而不是http://yoursite.com/connect。
但是还有一个额外的步骤,在app/config/security.yml
中,您必须将oauth防火墙的login_path
选项更改为FOSUserbundle的登录网址,该地址通常为/login
,例如
#app/config/security.yml
#....
oauth:
#..
login_path: /login
#..
我也pushed a branch in the MinimalSecurityBundlesSetup repo。您可以将其作为参考。
更新:有关注册表单的答案
这是registration_form配置选项的用途。默认情况下,它设置为内置fos_user.registration.form
表单的FOSUserBundle
。如果confirmation
选项设置为true,则成功执行OAuth身份验证后HWIOAuthBundle
将重定向到http://your.site.com/connect/registration/{userid}
路由,其中会显示FOSUserBundle
注册表单。
如果您的自定义注册表单基于fos_user.registration.form
(as documented in the doc),则必须将registration_form
的值设置为表单服务名称的名称。然后,您必须自定义HWIOAuthBundle:registration.html.twig以匹配您的注册页面布局。正常注册页面和OAuth注册页面组合到同一路线似乎对我来说是不必要的。