使用symfony创建自定义用户提供程序

使用symfony创建自定义用户提供程序,symfony,Symfony,我正在尝试创建自己的自定义用户提供程序,但我仍停留在Symfony教程()的这一部分 在$userdata变量处我需要做什么?数据库连接 我不知道在这个地方我需要做什么: public function loadUserByUsername($username) { // here // $userData = ... if ($userData) { //here too //$password = ... return

我正在尝试创建自己的自定义用户提供程序,但我仍停留在Symfony教程()的这一部分

在$userdata变量处我需要做什么?数据库连接

我不知道在这个地方我需要做什么:

public function loadUserByUsername($username)
{
    // here
    // $userData = ...
    if ($userData) {
        //here too
        //$password = ...
        return new DomixBlogUser($username, $password, $salt, $roles)
    } else {
        throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
    }
}
编辑#1


这很好?

是的,很可能是来自数据库连接。真的,尽管它可能来自任何地方。它的意思是,您的
loadUserByUsername
方法应该根据给定的用户名从存储用户的任何位置/服务获取一些“用户数据”,然后返回这些数据

public function loadUserByUsername($username)
{
    $userData = $this->_em->getRepository("DomixBlogBundle:User")->findOneBy(array('username' => $username));

    if (null !== $userData) {

        return $userData;
    } else {
        throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
    }
}

您可以在.

中看到这方面的一个例子,因此,我可以这样做:$this->getDoctrine()->getEntityManager()->getRepository('DomixBlogBundle:User')->find($username)?为了访问实体管理器,您需要将其插入服务定义中的UserProviders构造函数中
$this->getDoctrine()
只是控制器中的一个辅助方法。请参见此处,了解目前将实体管理器注入到您的服务中的信息,我写道:$userData=$this->_em->getRepository(“DomixBlogBundle:User”)->findOneBy(array('username'=>$username));,如果没有用户,则返回null(良好)。如何使用$password?我不知道为什么,但我无法登录(总是说
凭据不正确
public function loadUserByUsername($username)
{
    $userData = $this->_em->getRepository("DomixBlogBundle:User")->findOneBy(array('username' => $username));

    if (null !== $userData) {

        return $userData;
    } else {
        throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
    }
}