この質問を見つけました: Symfony でログに記録されていないユーザーのセキュリティ トークンを取得する
これは、新しいセキュリティトークンを設定できると考えるのに役立ちます(既存のロールを更新しようとする代わりに)。ユーザーの役割は User テーブルに保存されていないので、意味があります。
public function strangeAction()
{
// Get your User, however you normally get it
$user = $userRepository->find($id);
// Save the original token in the session (just in case I need to reverse it)
$originalToken = $this->get("security.context")->getToken();
$this->getRequest()->getSession()->set('original.security.token', $originalToken);
// Create my new custom token (loading the roles of the user)
$token = new UsernamePasswordToken($user, null, "main", $user->getRolesMagically());
// Update the security context with the new token
$this->get("security.context")->setToken($token);
// Now you have access to isGranted()
if ($this->get("security.context")->isGranted("ROLE_SOMETHING"))
}
私はこの解決策に自信を持っていますが、可能であればさらに情報を提供してください。
すなわち。なぜ私はこのようにすべきではないのですか?