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

时间:2012-06-24 20:05:36

标签: symfony

我正在尝试使用自己的自定义用户提供程序,但我仍然坚持使用Symfony教程的这一部分(Create a User Provider)。

$ 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

public function loadUserByUsername($username)
{
    $userData = $this->_em->getRepository("DomixBlogBundle:User")->findOneBy(array('username' => $username));
    var_dump($userData);
    if ($userData) {
        $salt = '54hg5g4hfjh4g5sdgf45gd4h84gjhdf54gf4g2f2gfdhggfdg';
        $password = $userData->getPassword().'{'.$salt.'}';

        return new DomixBlogUser($username, $password, $salt, $roles);
    } else {
        throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
    }
}
那很好吗?

1 个答案:

答案 0 :(得分:2)

是的,很可能是来自数据库连接。真的,它可能来自任何地方。它的含义是你的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));
    }
}

您可以在default symfony entity user provider中找到相关示例。