Symfony 2.7:转发魔术方法登录无法正常工作

时间:2017-11-17 08:46:41

标签: php symfony

1。 Systemcredentials:

使用: symfony 2.7, php 5.6, Apache 2作为Webserver

2。问题:

尝试实现facebook连接。用户可以登录登录页面,并且应该从后端登录。需要设置PHPSESSION Cookie。前端部分调用后端函数fbconnect。 fbconnect操作检查表单和facebook凭据是否有效。如果切换参数有效并连接到Facebook和我的应用程序,则操作 从symfony转发到magic登录方法。现在魔术登录功能应该登录用户,但操作似乎只是设置cookie。我现在还是个笨蛋。也许事件链在这一点上被打破了,因为前进到魔法登录动作?奇怪的行为是fbconnect动作被调用两次,但在前端部分,该方法被调用一次。我错过了一些特别的东西吗?

我的参数:facebook ID,facebook(有效)Accesstoken,facebook Email

第3。代码片段

我的 security.yml 文件:

security:
    firewalls:
    ....
    ....
    webapi:
        provider: secureBundle
        pattern: ^/webapi
        anonymous:  ~
        form_login:
            login_path: webapi-login
            check_path: webapi-login-check
            default_target_path: webapi-login-success
            require_previous_session: false

注意:“webapi-”部分是动态添加到操作的路由(路由正常工作)

fbconnect行动:

注意:操作验证表单是否正确以及所有参数是否有效,这只是转发代码段。

$response = $this->forward(
'ApiBundle:Login:login',['/login/'], [
    '_password' => $passwordEncoder->decodePassword($user->getPassword(), null),
    '_username' => $user->getEmail(),
]

登录操作

注意:引用来自symfony doc Login Symfony。 Action只是让symfony处理这个并且jetzt返回一个响应。

 /**
 * @Route(path="/login/",name="login")
 *
 * @param Request $request
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function loginAction(Request $request)
{

    $frame = $this->createFrame();

    $authenticationUtils = $this->get('security.authentication_utils');

    // get the login error if there is one
    $error = $authenticationUtils->getLastAuthenticationError();

    if ($error) {
        $frame->setError(true, Errno::GENERAL_BAD_CREDENTIALS, [$error->getMessage()]);
    }

    return $frame;
}

4。结论

就像我上面解释的那样,我认为symfony无法处理登录的转发。我不会解释为什么设置PHPSESSID Cookie,但我仍然是anon。你有这方面的经验吗?我很欣赏每一个提示。

问候暴力!

1 个答案:

答案 0 :(得分:1)

我想出了这个解决方案:

@Override
public void onNewIntent(Intent intent) {
    // Deal with new Intent over here...
}

我手动创建了登录信息。生成UsernamePasswordToken并分派事件。

希望它会帮助有同样问题的人!