我正在尝试使用自己的自定义用户提供程序,但我仍然坚持使用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));
}
}
那很好吗?
答案 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中找到相关示例。