Symfony 2.6 - поставщик безопасности

0

В настоящее время я разрабатываю приложение с использованием Symfony2.6. У меня есть некоторые проблемы. У меня есть два вида клиентов и пользователей сотрудника так в моей базе данных у меня есть клиент таблицы и таблица сотрудники. Как я могу сказать symfony, чтобы посмотреть в этих двух таблицах учетные данные пользователя, когда пользователь попытается войти в систему?

Я знаю, что вы можете определить поставщика в файле security.yml, который может быть сущностью, но как я могу объявить двух поставщиков? возможно, или я должен сделать это другим способом?

спасибо всем за ответы

Теги:

2 ответа

0
Лучший ответ

Итак, кому-то здесь я нашел ответ на эту конкретную проблему здесь: http://symfony.com/doc/current/cookbook/security/multiple_user_providers.html

Symfony позволяет нам объявлять несколько поставщиков пользователей

0

У меня есть что-то похожее (в настоящее время) на два разных типа пользователей. Однако, чтобы обрабатывать все логины и разрешения, я использую 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);
}

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню