用户symfony2的安全身份验证

时间:2014-03-04 09:31:05

标签: symfony authentication

我在我的项目中使用symfony2,我有一个实体员工,其中包含emlpolyee的所有信息以及用于登录其会话的用户名和密码。我想为员工创建一个安全的身份验证但是当我查看FOS Userbundle和SonataUserBundle的文档时,我发现我应该创建一个包含新用户名和密码的新实体USER。但我想使用存储在我的实体员工中的用户名和密码。这是我的实体: 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;
}

////////

}

怎么做??

1 个答案:

答案 0 :(得分:0)

official documentation解释了执行此操作的程序。

您的Employee类必须扩展基本User类:

<?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;
    }

} 

不要忘记配置FOSUserBundle来选择您的用户类:

# app/config/config.yml
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Foo\BarBundle\Entity\Employee

其余配置(security.yml文件,FOSUserBundle路由文件和其他要启动的命令)解释为documentation

documentation还解释了如何扩展User实体并覆盖表单。