Вдохновленный этим сообщением и этим кодом, я написал контроллер, который получает пользователя из базы данных, проверяет секретный ключ, а затем подделывает маркер входа следующим образом:
$providerKey = 'secured_area'; // Name of firewall from security.yml - not sure this is correct.
$token = new UsernamePasswordToken($user, null, $providerKey, array('AUTO_LOGIN'));
$this->container->get('security.context')->setToken($token);
(вам нужно это вверху вашего файла)
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
Кажется, это работает, и у пользователя есть роль AUTO_LOGIN
, поэтому я могу легко запретить им доступ к более чувствительным материалам, пока они не войдут в систему с именем пользователя и паролем, как обычно.