Отключить CSRF при регистрации пост-методом нового пользователя в FOSUserBundle - PullRequest
1 голос
/ 21 июня 2020

Я хочу объединить метод пост-отдыха и FOSUserBundle с моим symfony 3 приложением для регистрации нового пользователя, поэтому проблема в том, что когда я использую для публикации нового пользователя, я получаю эту ошибку Bad Request with "The CSRF token is invalid. Please try to resubmit the form

вот страница, которая появляется, когда я использую для публикации нового пользователя

Это метод регистрации:

class DefaultController extends BaseController
{

 /**
 * @Route("/register", name="registermethod")
 */
public function registerAction(Request $request)
{

    $usermane = $request->query->get('username');
    $password = $request->query->get('password');
    $email = $request->query->get('email');
    /** @var $formFactory FactoryInterface */
    $formFactory = $this->get('fos_user.registration.form.factory');
    /** @var $userManager UserManagerInterface */
    $userManager = $this->get('fos_user.user_manager');
    /** @var $dispatcher EventDispatcherInterface */
    $dispatcher = $this->get('event_dispatcher');

    $user = $userManager->createUser();
    $user->setEnabled(true);

    $event = new GetResponseUserEvent($user, $request);
    $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);

    if (null !== $event->getResponse()) {
        return $event->getResponse();
    }
    $form = $formFactory->createForm();
    $user->setUsername($usermane);
    $user->setPlainPassword($password);
    $user->setEmail($email);
    $form->setData($user);

    $form->handleRequest($request);

    $form->submit($request->request->all());

    if ($form->isSubmitted()) {
        if ($user->getUsername() != null) {

            $event = new FormEvent($form, $request);
            $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);

            $userManager->updateUser($user);

            /*****************************************************
             * Add new functionality (e.g. log the registration) *
             *****************************************************/
            $this->container->get('logger')->info(
                sprintf("New user registration: %s", $user)
            );

            if (null === $response = $event->getResponse()) {
                $url = $this->generateUrl('fos_user_registration_confirmed');
                $response = new RedirectResponse($url);
            }

            $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));

            return $response;
        }

        $event = new FormEvent($form, $request);
        $dispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE, $event);

        if (null !== $response = $event->getResponse()) {
            return $response;
        }
    }

    return $this->render('@FOSUser/Registration/register.html.twig', array(
        'form' => $form->createView(),
    ));
}

Я использую для публикации в этот метод в моем приложении angular, поэтому ссылка такая http://localhost:8000/showing1?username=azaz&email=asc@gmail.com&password=123456789

Заранее спасибо.

1 Ответ

0 голосов
/ 21 июня 2020

Я не уверен, целесообразно ли это, но вы можете сделать следующее.

$form = $formFactory->createForm(['csrf_protection' => false]);
...