Symfony 2.6-安全提供商


Symfony 2.6 - Security provider

我目前正在使用Symfony2.6开发一个应用程序,但遇到了一些问题。我有两种用户客户员工,所以在我的数据库中,我有一个表客户和一个表员工。当用户尝试登录时,我如何告诉symfony在这两个表中查找用户凭据?

我知道你可以在security.yml文件中定义一个提供者,它可以是实体,但我如何声明两个提供者?这可能吗?还是我必须换一种方式?

感谢大家的回答

我对(目前)两种不同类型的用户有类似的了解。不过,为了处理所有的登录和权限,我使用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);
}
}

因此,我在这里找到了这个特定问题的答案http://symfony.com/doc/current/cookbook/security/multiple_user_providers.html

Symfony允许我们声明一个多用户提供商