Я хотел бы подтвердить аутентификацию пользователя после его регистрации.
Итак, registrationAction:
public function registrationAction(Request $request) {
//Creating user...
return $this->forward('AcmeFrontBundle:Mobile:securityCheck', array(
'_username' => $customer->getEmail(),
'_password' => 'pwd',
));
}
Проблема в том, что система безопасности Symfony не перехватывает это перенаправление, но выполняет непосредственно securityCheckAction, который естественно пуст.
Перенаправление работает таким образом:
return $this->redirect($this->generateUrl('mobile_login_check') . "?_username=" . $customer->getEmail() . "&_password=pass");
Пересылка предпочтительнее, потому что я хотел бы использовать запрос POST для регистрацииAction и securityCheckAction.
Есть идеи?
С другой стороны, возможно, лучше было бы аутентифицировать пользователя самостоятельно? Как описано здесь: http://symfony.com/doc/current/cookbook/testing/simulating_authentication.html
Каково твое мнение?
Попытка выполнить перенаправление с помощью POST - это не очень хорошая идея. Вот почему: https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect
Лучший способ - создать токен & emit login: Как программно войти/подтвердить подлинность пользователя?
$token = new UsernamePasswordToken($customer, $customer->getPassword(), 'secured_mobile', $customer->getRoles()); $this->get('security.context')->setToken($token);
, Это просто и эффективно.