Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Symfony中将实体创建与登录操作挂钩_Symfony - Fatal编程技术网

如何在Symfony中将实体创建与登录操作挂钩

如何在Symfony中将实体创建与登录操作挂钩,symfony,Symfony,我正在建立我的第一个Symfony项目。我的用户身份验证是通过LDAP针对Active Directory进行的。当用户登录时,我想检查MySQL数据库的person表中是否有记录,如果没有,则创建一条记录。这应该是唯一可以添加新人员记录的时间 我用条令包来处理数据库。我已经生成了一个Person实体,它本质上只是Active Directory GUID到自动递增主键的一对一映射。以下是实体类: namespace MyProject\PersonBundle\Entity; use Doc

我正在建立我的第一个Symfony项目。我的用户身份验证是通过LDAP针对Active Directory进行的。当用户登录时,我想检查MySQL数据库的
person
表中是否有记录,如果没有,则创建一条记录。这应该是唯一可以添加新人员记录的时间

我用条令包来处理数据库。我已经生成了一个
Person
实体,它本质上只是Active Directory GUID到自动递增主键的一对一映射。以下是实体类:

namespace MyProject\PersonBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="person")
 */
class Person
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=16, unique=true, nullable=false)
     */
    protected $AD_guid;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set AD_guid
     *
     * @param string $aDGuid
     * @return Person
     */
    public function setADGuid($aDGuid)
    {
        $this->AD_guid = $aDGuid;

        return $this;
    }

    /**
     * Get AD_guid
     *
     * @return string 
     */
    public function getADGuid()
    {
        return $this->AD_guid;
    }
}

我认为将
Person
创建与登录操作相耦合应该意味着
Person
不会得到
PersonController
(因为它从未出现过),或者可能
PersonController
不需要路由方向。但是,无论我是否有
PersonController
,我都不确定如何连接到登录操作。建议?

如何对用户进行身份验证?您是使用LDAP验证插件还是自己编写的? 无论哪种方式,都有一个类和方法检查LDAP中的用户。 钩子a)在这个类中,b)在这个类的父调用之后。
只需检查数据库中是否有条目,如果没有,则创建一个新的Person(),设置数据并保存()。Person是您的模型,可以在您需要的任何地方使用(尽管您应该尊重MVC模式)

我正在使用
ZtecSecurityActiveDirectoryBundle
()进行身份验证。但我的印象是Symfony抽象了安全性,因此无论使用哪个验证器包,我都应该能够在登录事件上放置一个
侦听器。这不正确吗?也许这有助于: