3

security.contentSymfony2 を使用して、ログイン後に取得した情報を使用して、ログイン後にユーザーを拡張したいと考えています。

したがって、ログイン成功コードでは、 で次のことを行いますAccountController

$user = $this->get('security.context')->getToken()->getUser();

// Get everything we'll ever need for this user
$user->fillDetails($this, $this->container);

$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());

// Give it to the security context
$this->container->get('security.context')->setToken($token);

return $this->redirect($this->generateUrl('AccountBundle_homepage'));

この情報を呼び出した後、すぐにユーザーを再度取得するsetToken()と、 User オブジェクトに設定されている情報fillDetails()がまだ存在します。

AccountBundle_homepageただし、ユーザーが使用するときのコントローラーアクションでは

$user = $this->get('security.context')->getToken()->getUser();

設定した余分な情報fillDetails()がなくなっている、または0.

どんな助けでも感謝します。

4

1 に答える 1

2

セキュリティ コンテキストは、リクエストごとにトークンを作成します。つまり、トークンを変更したり、ユーザーをリダイレクトしたり、前のトークンでデータ セットを取得したりすることはできません。ユーザーを永続化しないと、機能しません。ユーザーもリクエストごとにリロードされます。

トークンの詳細については、http ://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html#the-token を参照してください。

于 2012-08-23T15:35:23.270 に答える