В настоящее время я разрабатываю приложение с использованием Symfony2.6. У меня есть некоторые проблемы. У меня есть два вида клиентов и пользователей сотрудника так в моей базе данных у меня есть клиент таблицы и таблица сотрудники. Как я могу сказать symfony, чтобы посмотреть в этих двух таблицах учетные данные пользователя, когда пользователь попытается войти в систему?
Я знаю, что вы можете определить поставщика в файле security.yml, который может быть сущностью, но как я могу объявить двух поставщиков? возможно, или я должен сделать это другим способом?
спасибо всем за ответы
Итак, кому-то здесь я нашел ответ на эту конкретную проблему здесь: http://symfony.com/doc/current/cookbook/security/multiple_user_providers.html
Symfony позволяет нам объявлять несколько поставщиков пользователей
У меня есть что-то похожее (в настоящее время) на два разных типа пользователей. Однако, чтобы обрабатывать все логины и разрешения, я использую FosUserBundle и назначая им роли, которые я могу проверить, а затем извлекать профили пользователей на основе этого.
Чтобы убедиться, что они получили правильный ROLE_ *, назначенный при создании пользователя, я выполнил вопрос SO, добавив новых пользователей FOSUserBundle в группу по умолчанию при создании. Они пишут переменную сеанса с будущей ролью, которую они возьмут, а затем у меня есть прослушиватель событий, чтобы установить эту роль для недавно отчеканенного FosUser:
<?php
class UserCreationListener implements EventSubscriberInterface
{
// lots of constructor setup, debugging, logging and checks removed from code
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess',
);
}
public function onRegistrationSuccess(FormEvent $event)
{
$user = $event->getForm()->getData();
$newRole = $this->session->get('futureRole', 'ROLE_CUSTOMER');
$user->addRole($role);
$this->userManager->updateUser($user);
return $this->redirect->redirect('app_profile', 302);
}
}