gpt4 book ai didi

Symfony 2 FOSFacebookBundle 登录前自定义重定向

转载 作者:行者123 更新时间:2023-12-02 18:42:18 25 4
gpt4 key购买 nike

我在我的项目中使用 FOSUserBundle 和 FOSFacebookBundle(对于版本 SF 2.0.x)。此外,我按照 FOSFacebookBundle 文档中的描述实现并自定义了 FacebookProvider。我想实现以下工作流程:1.) 用户第一次访问我的门户2.) 他点击 Facebook 登录按钮3.) 现在我需要检查点击 Facebook 登录按钮的用户是否已经在我的门户上有 Facebook 好友。4.) 如果他有 friend ,将他重定向到带有预填充输入字段的注册页面(包括来自 Facebook 的信息,例如用户名、名字、姓氏等)。5.) 如果他在我的门户上没有 Facebook 好友,请将他重定向到另一个页面

我已经开始查看 Webprofiler,以及调用哪些事件。我已经开始创建自己的事件监听器,如本页所述:http://www.dobervich.com/2011/10/13/login-redirection-revisited/但配置文件在“不称为监听器”列表中向我显示了我的监听器: security.interactive_login SecurityListener::onSecurityInteractiveLogin

有谁知道,我如何自定义此登录前检查并将用户重定向到页面?

如果能得到一些帮助,那就太好了。

谢谢你,拉莫

最佳答案

您需要配置自定义身份验证成功处理程序。配置实现 AuthenticationSuccessHandlerInterface 的服务:

facebook_auth_success_handler:
class: MyHandler
public: false
arguments:
# your dependencies...

然后将此处理程序添加到 fos_facebook block 下的 security.yml 中:

firewalls:
foo:
fos_facebook:
success_handler: facebook_auth_success_handler

处理程序本身应该如下所示:

public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$user = $token->getUser();
$hasFriendsHereAlready = // your logic here
if ($hasFriendsHereAlready) {
$route = 'foo';
} else {
$route = 'bar';
}
return new RedirectResponse($this->router->generate($route));
}

关于Symfony 2 FOSFacebookBundle 登录前自定义重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com