6

有没有人有一个例子或任何想法如何将 FOSRestBundle 与 FOSUserBundle 一起实现。我已经使用 Symfony 2 和 FOSUserBundle 开发了一个 Web 应用程序,但我想为 api 层添加 FOSRestBundle。我希望能够将用户名和密码传递给它,并从 FOSUserBundle 接收某种类型的令牌,该令牌代表已登录的用户,然后我可以在其他 api 调用之间来回传递。有谁知道这样做的好方法?

4

1 回答 1

3

FOSUserBundle应该是原生的“restful”,这意味着它可以遵循 REST 建议。

但是,它不是为原生使用而设计的FOSRestBundle,最简单的方法是覆盖 Bundle 中的 UsersController 并调整您的操作。

例如,要允许 RESTFul 注册,您可以编写以下操作:

    public function postUsersAction()
    {
        $form = $this->container->get('fos_user.registration.form');
        $formHandler = $this->container->get('fos_user.registration.form.handler');
        $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');

        $process = $formHandler->process($confirmationEnabled);

        if ($process) {
            $user = $form->getData();
            $authUser = false;

            if ($confirmationEnabled) {
            } else {
                $authUser = true;
            }

            $response = new Response();

            if ($authUser) {
                /* @todo Implement authentication */
                //$this->authenticateUser($user, $response);
            }

            $response->setStatusCode(Codes::HTTP_CREATED);
            $response->headers->set(
                'Location',
                $this->generateUrl(
                    'api_users_get_user',
                    array('user' => $user->getId()),
                    true
                )
            );

            return $response;
        }

        return RestView::create($form, Codes::HTTP_BAD_REQUEST);
    }
于 2012-08-28T08:33:40.973 回答