2011-12-18 2 views
0

Я следующий пример того, как вручную аутентификации пользователя после регистрации, это выглядит следующим образом:app.user не устанавливается, если вручную авторизаций пользователя

$token = new UsernamePasswordToken($user->getUsername(), null, 'main', array('ROLE_USER')); 
$this->get('security.context')->setToken($token); 

Bu, потому что я использую учение сущность как провайдер, он не устанавливается правильно, и я не знаю, как это сделать правильно. Если я передаю $ user в качестве первой аргумента веб-страницы, то цикл будет бесконечным. Я чувствую, что должен быть класс DoctrineUserToken, но не могу его найти.

Можете ли вы направить меня, пожалуйста?

EDIT:

если изменить линию к этому:

$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles()); 

, где я прохожу $ пользователя в качестве первого аргумента, и получить роли из объекта пользователя, то перенаправление результатов в бесконечном цикле.

Я потерян.

+0

вы используете FOSUserBundle обрабатывать логины? Если нет, почему бы и нет? – Tool

+4

Ваш брандмауэр определенно называется «основным» в 'security.yml' – Kasheen

+0

@Tool, не используя FOS. – DavidW

ответ

2

Попробуйте этот код:

$token = new UsernamePasswordToken($user->getUsername(), null, 'secured_area', array('ROLE_USER')); 
$this->get('security.context')->setToken($token); 

$ providerKey должны быть получить вид secure.yml:

firewalls: 
    secured_area: 
     form_login: 
      check_path: /signInCheck 
      login_path: /signIn 
     logout: true 
Смежные вопросы