Я создаю систему безопасности, используя встроенную систему безопасности symfony4.
Я собираю регистрационную форму на странице index
.
И выполняю регистрацию в функции index
Однако после завершения регистрации пользователю необходимо снова ввести имя пользователя и пароль.
Я хочу пропустить этот процесс.
После регистрации пользователю больше не нужно вводить имя пользователя и пароль.
Как мне решить эту проблему?
public function index(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
$this->commonFunc = $commonFunc;
$this->data['user'] = $this->getUser();
if (!$this->data['user']){// make registration form when no login
$user = new User();
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$password = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
$user->setPassword($password);
// save the User!
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
$this->data['user'] = $user;
// After registration process. the user must input id and pass again.
// I want to skip this.
return $this->redirectToRoute('index');
}
$this->data['form'] = $form->createView();
}
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
'data' => $this->data
]);
}
Это мой окончательный варианткод из предложения @Cerad.
Я изменил способ получения tokenStorage (моя среда 4.1) Почему-то мне не нужно отправлять события ... Однако это работает.
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
// $ this-> tokenStorage-> setToken ($ token);$ This-> получить ( 'security.token_storage') -> setToken ($ токенов);