注册后自动登录

白熊

我正在使用 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->get('security.token_storage')->setToken($token);

塞拉德

这是我使用的:

private function loginUser(Request $request, UserInterface $user) : void
{
    $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
    $this->tokenStorage->setToken($token);

    $event = new InteractiveLoginEvent($request, $token);
    $this->eventDispatcher->dispatch(SecurityEvents::INTERACTIVE_LOGIN, $event);
}

您可以注入令牌存储和事件调度程序,也可以从容器中提取它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

注册后,Devise无法登录

来自分类Dev

如何使用核心php在WordPress中注册后自动登录

来自分类Dev

认证后隐藏登录/注册

来自分类Dev

CakePHP 3:如何在注册后自动登录用户

来自分类Dev

向IdentityServer3注册后自动登录本地用户

来自分类Dev

在Laravel注册后如何进行自动登录

来自分类Dev

登录后自动使用xmodmap

来自分类Dev

在asp.net mvc中成功注册(重定向到登录)后,用户名自动填写登录页面

来自分类Dev

在Django中注册后如何自动登录?

来自分类Dev

睡眠后如何自动登录

来自分类Dev

登录后自动使用xmodmap

来自分类Dev

在CakePHP 1.3中注册后自动登录

来自分类Dev

启动后自动登录Windows

来自分类Dev

解析注册后自动转发

来自分类Dev

登录后自动关闭登录页面

来自分类Dev

PHP + MySQL:注册后如何自动登录

来自分类Dev

自动登录后如何自动锁定

来自分类Dev

在WordPress中注册后无法登录

来自分类Dev

Yii2注册后自动登录

来自分类Dev

使用Django Rest Framework注册后如何自动登录?

来自分类Dev

注册后自动登录

来自分类Dev

注册后按返回登录屏幕

来自分类Dev

Symfony2 / SonataUserBundle-注册后自动登录

来自分类Dev

完成注册后,使注册页面登录

来自分类Dev

Laravel 5.4 - 注册后自动登录

来自分类Dev

Yii2注册后自动登录

来自分类Dev

用户注册后Django自动登录(2.1.4)

来自分类Dev

注册后自动生成密码

来自分类Dev

注册自动登录禁用