我在我的项目中使用了FOSUserBundle和FOSFacebookBundle (针对版本SF2.0.x)。此外,我按照FOSFacebookBundle文档中的描述实现并定制了FacebookProvider。我想要实现以下工作流程: 1.)用户第一次访问我的门户网站2。)他点击Facebook-登录-按钮3。)现在我需要检查这个点击Facebook-Login-Button的用户是否已经在我的门户上拥有Facebook-Friends。4.)如果他有朋友,请将他重定向到注册页面(包括来自Facebook的信息,如用户名、first_name、last_name等)具有预先填充的输入字段。5.)如果他在我的门户上没有Facebook好友,请将他重定向到另一个页面
我已经开始查看Webprofiler,它调用了哪些事件。我已经开始创建我自己的事件侦听器,就像这个页面上描述的那样:http://www.dobervich.com/2011/10/13/login-redirection-revisited/,但是配置文件在“未调用的侦听器”列表中显示了我的侦听器:onSecurityInteractiveLogin::onSecurityInteractiveLogin.
有没有人知道,我如何定制这个登录前检查并将用户重定向到页面?
如果能得到一些帮助就太好了。
谢谢你,拉莫
发布于 2012-01-02 23:43:08
您需要配置自定义身份验证成功处理程序。配置实现AuthenticationSuccessHandlerInterface的服务
facebook_auth_success_handler:
class: MyHandler
public: false
arguments:
# your dependencies...然后将此处理程序添加到fos_facebook块下的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));
}https://stackoverflow.com/questions/8694729
复制相似问题