今日、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'));
}
「connectcustomer」コメントの下の2行は、実際にはユーザーを正常に認証しているように見えます。問題は、RedirectResponseを使用して別のページにリダイレクトすると、認証が失われることです。
に電話をかけてみました
$this->container->get('security.context')->isGranted('ROLE_USER')
これは、RedirectResponseの呼び出しの直前にtrueを返し、応答がリダイレクトされている他のコントローラーではfalseを返します。
この時点で、私は自分が間違っていることについて少し混乱しています。どんなアイデアでもありがたいです。ところで、私はSymfony2.1を使用しています