Symfony 2.6 - 安全提供商

时间:2015-02-17 12:42:56

标签: php symfony

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

我知道您可以在security.yml文件中定义一个提供程序,该文件可以是实体但是如何声明两个提供程序?是可能的还是我必须以另一种方式做到这一点?

感谢所有人的回答

2 个答案:

答案 0 :(得分:0)

我与(目前)两种不同类型的用户有类似的东西。为了处理所有登录和权限,我使用FosUserBundle,并为其分配我可以检查的角色,然后根据该角色获取用户配置文件。

为了确保他们在用户创建时获得正确的ROLE_ *,我已经按照SO问题Adding new FOSUserBundle users to a default group on creation进行了操作。他们使用未来角色获取会话变量,然后我有一个事件监听器将该角色设置为新创建的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);
}

}

答案 1 :(得分:0)

所以对某人来说,我在这里找到了这个具体问题的答案 http://symfony.com/doc/current/cookbook/security/multiple_user_providers.html

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