用户的安全身份验证symfony2

用户的安全身份验证symfony2,symfony,authentication,Symfony,Authentication,我在我的项目中使用symfony2,我有一名实体员工,其中包括emlpolyee的所有信息以及登录到其会话的用户名和密码。我想为员工创建一个安全的身份验证,但当我检查FOS Userbundle和SonataUserBundle的文档时,我发现我应该创建一个新的实体用户,其中包括新的用户名和密码。但我想使用存储在实体雇员中的用户名和密码。这是我的实体: employee.php class employee { private $codeEmployee; ////// private

我在我的项目中使用symfony2,我有一名实体员工,其中包括emlpolyee的所有信息以及登录到其会话的用户名和密码。我想为员工创建一个安全的身份验证,但当我检查FOS Userbundle和SonataUserBundle的文档时,我发现我应该创建一个新的实体用户,其中包括新的用户名和密码。但我想使用存储在实体雇员中的用户名和密码。这是我的实体: employee.php

class employee
{

private $codeEmployee;

//////


private $username;


private $password;



public function getCodeEmployee()
{
    return $this->codeEmployee;
}

/////


public function setusername($username)
{
    $this->username = $username;

    return $this;
}


public function getusername()
{
    return $this->username;
}


public function setPassword($password)
{
    $this->password = $password;

    return $this;
}


public function getPassword()
{
    return $this->password;
}

////////
}

如何做到这一点???

说明了实现这一点的步骤

您的Employee类必须扩展基本用户类:

<?php

namespace Foo\BarBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="employees")
 */
class Employee extends BaseUser
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    protected $codeEmployee;

    // Optional
    public function __construct()
    {
        parent::__construct();
        // your own logic
    }

    public function getCodeEmployee()
    {
        return $this->codeEmployee;
    }

    public function setCodeEmployee($codeEmployee)
    {
        $this->codeEmployee = $codeEmployee;
        return $this;
    }

} 
# app/config/config.yml
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Foo\BarBundle\Entity\Employee
配置的其余部分(security.yml文件、FOSUserBundle路由文件和要启动的其他命令)解释如下


还解释了如何扩展用户实体和重写表单。

但是在employee实体中,我有一个字符串id,它是codeEmployee,我没有构造函数。因此构造函数是可选的。并且必须将codeEmployee声明为列。我编辑我的答案。