我目前正在使用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允许我们声明一个多用户提供商