【问题标题】:Pass parameter HWIOAuthbundle symfony2传递参数 HWIOAuthbundle symfony2
【发布时间】:2022-05-09 15:56:10
【问题描述】:

我正在尝试从我的 Facebook 和 Google 登录按钮传递一个 GET 参数,这是我使用 HWIOAuthbundle 设置的。我看过这个问题:To path the parameter to OAuth facebook login by symfony2/HWIOAuthBundle,但是我不太明白他是如何让它工作的。他提到使用推荐人,我对此一无所知 - 而且我没有足够的声誉来对该问题发表评论......

我在想这样的事情:

<a href="{{ path('google_login',{'datakey':1}) }}">Link</a>

但是如何在我的 FOSUBUserProvider 中检索它? 感谢所有帮助!

【问题讨论】:

  • 你试过类似&lt;a href="{{ path('google_login') }}?datakey=1"&gt;Link&lt;/a&gt;的东西吗?
  • 嗨,Matteo,我最终制作了一个 cookie,并将其放入我的 FOSUBUserProvider :) 无论如何,谢谢!
  • 嗨@Mathias,不客气!看起来很有趣,你能把你的解决方案描述为这个问题的答案吗?因此,您也可以在解决后关闭并帮助其他相关问题
  • 嗨,Matteo,检查答案 :)

标签: php symfony hwioauthbundle


【解决方案1】:

我终于设法让它工作了。但是,我不确定这是最好的方法。在我找到更合适的解决方案之前,这是一个快速解决方案。

当有人使用 datakey 变量作为 $_GET 参数进入我的网站时,我会使用该值设置一个 cookie。当用户登录时,FOSUBUserProvider 会检查是否设置了 datakey cookie;如果是,它会做它的事。

这是我目前能做的最好的事情,因为我还没有成功地将参数通过 hwioauthbundle 发送到我的 FOSUBUserProvider 中。

如果有人找到更好的解决方案,请告诉我!

【讨论】:

    【解决方案2】:

    无需设置 cookie。只需先设置一个会话变量(在控制器中):

    $session->set('role', 'ROLE_CLIENT');
    

    然后,将会话注入您的 UserProvider(在 services.yaml 中):

    app.user.oauth_provider:
      class:     App\Security\Core\User\AppUserProvider
      arguments: ['@doctrine', { google: googleId, facebook: facebookId, apple: appleId }, '@session']
      public:    true
    

    最后,在你的 UserProvider 中获取变量,使用它,然后清除它:

    $role = $this->session->get('role');
    if ($role) {
      $user->addRole($role);
      $this->session->set('role', null);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多