Авторизация пользователей на Symfony 2?

Добрый день

У меня такой вопрос – используя внешний сервис аутентификации, мне нужно запускать пользователей на сайт, без сохранения их состояния в БД, то бишь только сессии.

Другими словами:
1. Пользователь вводит логин и пароль;
2. Жмет Вход;
3. Отправляется запрос из приложения в СА (логин и пароль);
4. Обрабатывается ответ СА (возможен вход или нет);
5. Пользователь получает или не получает доступ к приложению.

Собственно, сама проверка не особо должна Вас волновать, интересует принцип работы такой схемы и возможные способы реализации.
  • Вопрос задан
  • 4860 просмотров
Решения вопроса 1
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
проверяйте авторизацию как угодно, а потом делайте вот так

$session = $this->client->getContainer()->get('session');

$firewall = 'secured_area';
$token = new UsernamePasswordToken('username', null, $firewall, array('ROLE_USER'));
$session->set('_security_'.$firewall, serialize($token));
$session->save();

$cookie = new Cookie($session->getName(), $session->getId());
$this->client->getCookieJar()->set($cookie);


или делайте свой провайдер аутентификации

symfony.com/doc/current/cookbook/security/custom_a...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Почитайте документацию. Вам нужно реализовать свой userProvider на основе данных сессии, и фаервол.
Ответ написан
@faost
Если у вас какой-то из популярных способов используются, то у симфони есть много бандалов для разных протоколов аутентификации.

Если все кастомное, то как выше писали, надо написать свой провайдер аутентификации.

Если все же переложить аутентификацию на симфони, а сервис сможет возвращать по имени юзера и хеш пароля, тогда достаточно сделать свой UserProvider:

  1. Создаем класс юзера, реализующий интерфейс UserInterface (там всего 5 методов)
  2. Пишем класс, реализующий UserProviderInterface, который будет извлекать юзера по имени с хешем пароля и другими данными
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы