首页 文章

如何组合FosUserBundle和HWIAothBundle登录和注册

提问于
浏览
2

我正在创建一个登录页面和一个注册页面
使用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中不存在变量_2385609:第15行连接:login.html.twig

这意味着HWIOauthBundle不使用/包括FOSUserbundle

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

任何帮助将不胜感激

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

解决方法
如果我输入以下网址就可以了
.... 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 /连接
并不是
.... app_dev.php / secure_area /连接/谷歌

如预期
TIA

1 回答

  • 4

    好吧,我似乎没有解释好:)我实际上意味着你应该复制/修改部分

    {% for owner in hwi_oauth_resource_owners() %}
    <a href="{{ hwi_oauth_login_url(owner) }}">{{ owner | trans({}, 'HWIOAuthBundle') }}</a> 
    {% endfor %}

    HWIOAuthBundle:Connect:login.html.twig并将其置于FOSUserBundle:Security:login.html.twig显示的FOSUserBundle:Security:login.html.twig文件中 . 所以当前的登录URL将是http://yoursite.com/login而不是http://yoursite.com/connect .

    但是还有一个额外的步骤,在 app/config/security.yml 中你必须将oauth防火墙的 login_path 选项更改为FOSUserbundle的登录URL,它通常是 /login ,例如

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

    我也有pushed a branch in the MinimalSecurityBundlesSetup repo . 您可以将其作为参考 .

    Update: the answer regarding to registration form

    那是registration_form配置选项发挥作用的地方 . 默认情况下,它设置为 fos_user.registration.form ,内置 FOSUserBundle 表单 . 如果 confirmation 选项设置为true,则成功执行OAuth身份验证 HWIOAuthBundle 将重定向到 http://your.site.com/connect/registration/{userid} 路由,其中将呈现 FOSUserBundle 注册表单 .

    如果您有基于 fos_user.registration.formas documented in the doc)的自定义注册表单,则必须将 registration_form 的值设置为表单服务名称的名称 . 然后,您必须自定义HWIOAuthBundle:registration.html.twig以匹配您的注册页面布局 . 正常注册页面和OAuth注册页面组合到同一路线似乎对我来说是不必要的 .

相关问题