1

FOSUserBundle を使用して新しいユーザーを登録します。

ユーザーはいくつかの質問に答え、セッションに保存されます。答えが正しければ、ユーザーは登録アクションにリダイレクトされます。登録後、ユーザーは finalAction にリダイレクトされます。finalAction では、セッションからデータにアクセスできませんが、ページをリロードすると、データがそこにあります。

誰が何が悪いのか知っていますか?

私の registerAction() のコードの一部

      $formHandler = $this->container->get('project_user.form.handler.registration');
        $process = $formHandler->process(false);
        if ($process)
        {

            $user = $form->getData();
            $url = $this->container->get('router')->generate('project_user_check_register', array(
                'url' => urlencode($pLink . '?from_register=1')
            ));

            $response = new RedirectResponse($url, 301);

            $authenticate = $this->authenticateUser($user, $response, true);

            return $authenticate;
        }

ここにauthenticateUserメソッドがあります

protected function authenticateUser(UserInterface $user, Response $response, $registration = false)
    {         
        $expires = time() + 31536000;
        $secret = $this->container->getParameter('secret');
        $userClass = get_class($user);

        $value = base64_encode(implode(':', array(
            $userClass,
            base64_encode($user->getUsername()),
            $expires,  
            hash('sha256', $userClass.$user->getUsername().$expires.$user->getPassword().$secret)
            )));

        $response->headers->setCookie(
            new Cookie(
                'REMEMBERME',
                $value,
                $expires
            )
        );   

        try
        {
            $this->container->get('fos_user.security.login_manager')->loginUser(
                    $this->container->getParameter('fos_user.firewall_name'), $user, $response);

        }
        catch (AccountStatusException $ex)
        {
            // We simply do not authenticate users which do not pass the user
            // checker (not enabled, expired, etc.).
        }

        if($registration)
        {
            /*
             * remove the recommendation cookie
             */
            if ($this->container->get('request')->cookies->get('recommendCookie'))
            {
                $cookie = new Cookie('recommendCookie', '_______', time() - 100);

                $response->headers->setCookie($cookie);
            }            

        }
        return $response;
    }   
4

0 に答える 0