使用 FOSUserBundle 自动登录 Symfony2 [重复]
Posted
技术标签:
【中文标题】使用 FOSUserBundle 自动登录 Symfony2 [重复]【英文标题】:Automatically login in Symfony2 with FOSUserBundle [duplicate] 【发布时间】:2014-02-22 21:11:53 【问题描述】:我在我的 Symfony2 应用程序中创建了一个单独的注册机制(使用 FOSUserBundle),除了常规注册之外,它还存在。
有什么办法——在我创建用户并将其保存到数据库之后——自动登录当前用户。之后,用户将被重定向到需要登录用户的页面(并且由于自动登录,用户可以访问该页面)?
这基本上是我创建用户的方法:
public function signupAction(Request $request)
$user = new User();
$form = $this->createFormBuilder($user)
->...()
->getForm();
$form->handleRequest($request);
if ($form->isValid())
// Enable User
$user->setEnabled(true);
// Persist to DB
$em->persist($user);
$em->flush();
// Here I need the auto-login before redirecting to _root
return $this->redirect($this->generateUrl('_root'));
return $this->render('MyBundle:MyController:signup.html.twig', array(
'form' => $form->createView()
));
【问题讨论】:
【参考方案1】:注意:这似乎不再适用于 Symfony3。
从answer 引用到duplicate question:
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
$user = //Handle getting or creating the user entity likely with a posted form
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.context')->setToken($token);
$this->get('session')->set('_security_main',serialize($token));
【讨论】:
它在 Symfony 3.1 中不起作用 @AlexeyKosov ,在 Symfony 3.1 中使用security.token_storage
而不是 security.context
为我工作
FOSUserBundle 有一个更简单、更干净的解决方案:***.com/a/44386575/592477以上是关于使用 FOSUserBundle 自动登录 Symfony2 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
symfony2:使用 fosuserbundle 登录后使用引用
FOSUserBundle 使用电子邮件登录 (Symfony2)
FOSUserBundle 通过电子邮件与服务提供商登录,最佳实践
将 JSON 数据发布到 FOSUserBundle 注册、登录、个人资料等
Symfony2 在未登录时将 /admin/* 重定向到 /admin/login(或使用 FOSUserBundle?)