我今天遇到了我的 SF2 应用程序的问题。我希望用户在提交有效的订阅表单后自动进行身份验证。
所以基本上在我的控制器中,这就是我所做的:
if ($form->isValid()) {
$customer = $form->getData();
try {
$customer = $this->get('my.service.manager.customer')->customerSubscribe($customer);
} catch (APIClientException $e) {
$error = $e->getErrors();
...
}
if ($customer && !isset($error)) {
// connect customer
$token = new UsernamePasswordToken($customer, null, 'api_auth', array('ROLE_USER'));
$this->get('security.context')->setToken($token);
...
}
return new RedirectResponse($this->generateUrl('MyBundle_index'));
}
“连接客户”评论下方的两行实际上似乎可以很好地验证用户身份。问题是当我使用 RedirectResponse 重定向到另一个页面时,身份验证就会丢失。
我试过打电话给
$this->container->get('security.context')->isGranted('ROLE_USER')
它在调用 RedirectResponse 之前返回 true,在我的另一个控制器中返回 false,其中响应被重定向。
在这一点上,我对自己做错了什么感到有些困惑。任何想法表示赞赏。顺便说一句,我正在使用 Symfony2.1