В моем проекте я использую Symfony 2.8, SonataAdminBundle и SonataUserBundle.Symfony2/SonataUserBundle - Автоматический вход в систему после регистрации
Я переопределяю регистр RegistrationController в FOSUserBundle. После успешной регистрации я хочу, чтобы Пользователь автоматически регистрировался в брандмауэре SonataAdmin.
После работы с моей регистрацией я называю это в действии:
$userManager->updateUser($user);
$response = new RedirectResponse($this->generateUrl('sonata_admin_dashboard'));
$this->authenticateUser($user, $response);
$this->setFlash('notice', 'success!');
return $response;
Моего FOSUser конфигурация выглядит следующим образом:
fos_user:
db_driver: orm
firewall_name: admin
user_class: Application\Sonata\UserBundle\Entity\User
service:
user_manager: sonata.user.orm.user_manager
registration:
confirmation:
enabled: false
form:
validation_groups: [pwValidation]
И мой security.yml
выглядит следующим образом:
firewalls:
admin:
pattern: /admin/(.*)
context: admin
form_login:
provider: fos_userbundle
login_path: /admin/login
use_forward: true
check_path: /admin/login_check
failure_path: null
default_target_path: /admin/dashboard
always_use_default_target_path: true
logout:
path: /admin/logout
anonymous: true
Каждый раз, когда я регистрирую нового пользователя, я перенаправляюсь на экран входа в SonataAdmin с 40 1 Statuscode и профилировщик Symfony говорят, что я аутентифицирован с помощью анонимного пользователя.
Я уже пытался пропустить функцию
$this->authenticateUser($user, $response);
и вручную вызвать это:
$token = new UsernamePasswordToken($user, null, 'admin', $user->getRoles());
$this->container->get('security.token_storage')->setToken($token);
$this->container->get('session')->set('_security_main', serialize($token));
Но если я пытаюсь это я получаю такое же поведение.
Может ли кто-нибудь сказать мне, что я делаю неправильно, пожалуйста?