2

我正在
使用 FosUserBundle 和 HWIOAuthBundle + Symfony2.4 使用作曲家制作登录页面和注册页面,
我想要的行为是:
在登录页面上->

        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
但是当我尝试这样
做时给出错误:第 15 行的 HWIOAuthBundle:Connect:login.html.twig 中不存在变量“last_username”

这意味着 HWIOauthBundle 没有使用/包括 FOSUserbundle

据我了解,您只能扩展一个 BaseBundle
问题:
1)这甚至可能吗?
2)如果不是,那么可以证明所需行为的正确捆绑包是什么

任何帮助将不胜感激

--- 编辑 ---
我能够结合 2 种登录方法(请参阅下面 m2mdas 的答案),但仍然无法结合 2 种注册方法

一种解决方法
,如果我输入下面的 url 它可以工作
....app_dev.php/secure_area/connect/google 所以我需要自定义路由到我尝试过的 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/connect/google

按预期
TIA

4

1 回答 1

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并将其放置到显示的覆盖FOSUserBundle:Security:login.html.twig文件中http://yoursite.com/login。所以当前的登录 url 将是http://yoursite.com/login而不是http://yoursite.com/connect

但是还有一个额外的步骤,app/config/security.yml您必须将login_pathoauth 防火墙的选项更改为 FOSUserbundle 的登录 url,通常是/login,例如

#app/config/security.yml
#....
oauth:
    #..
    login_path: /login
    #..

我还在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如文档中所述)的自定义注册表单,则必须将值设置registration_form为表单的服务名称。然后您必须自定义HWIOAuthBundle:registration.html.twig以匹配您的注册页面布局。对我来说,将普通注册页面和 OAuth 注册页面组合到同一条路线中似乎是不必要的。

于 2014-01-17T19:33:15.773 回答