Аутентификация в функциональных тестах в Symfony 2.1

Сейчас я занимаюсь миграцией 2.0. *в текущую бета-версию Symfony 2.1.

В моих функциональных тестах в настоящее время у меня есть этот код для создания клиента с аутентификацией:

$client = // create a normal test client
$role = 'ROLE_USER';
$firewallName = 'main';
$user = // pull a user from db

$client->getCookieJar()->set(new \Symfony\Component\BrowserKit\Cookie(session_name(), true));

$token = new UsernamePasswordToken($user, null, $firewallName, array($role));

self::$kernel->getContainer()->get('session')->set('_security_'. $firewallName, 
serialize($token));

это работает, как и ожидалось в 2.0. *, но не в 2.1, данные не устанавливаются в сеансе.

Любые идеи?

Изменить (, добавив больше информации):

похоже проблема кроется в файле "Symfony\Component\Security\Http\Firewall\ContextListener " в методе "onKernelResponse ". Есть этот код:

if ((null === $token = $this->context->getToken()) || ($token instanceof AnonymousToken)) {
    $session->remove('_security_'.$this->contextKey);
} else {
    $session->set('_security_'.$this->contextKey, serialize($token));
}

в моем случае если "$token instanceof AnonymousToken" истинно, из-за этого ключ сеанса удаляется. если я закомментирую этот код, все будет работать как положено.

Итак, я думаю, мой новый вопрос: :Что я могу сделать, чтобы токен не был анонимным?

19
задан j0k 26 September 2012 в 07:33
поделиться