Encoder-> IsPasswordValid必须实现interface \ UserInterface

时间:2018-02-25 00:01:43

标签: php symfony

我正在尝试验证用户,我无法使用FOSub bcz它与Symfony 4不兼容,我正在编写我的编码。 我通过ajax将用户名和密码传递给服务。尝试登录用户的方法:

public function login($username, $password) {

$user = $this->entityManager->getRepository("App:Users")
    ->findOneBy(array('username' => $username));
}

if(!$this->encoder->isPasswordValid($user->getPassword(), $password)) {
    return new Response(
        'Username or Password not valid.',
        Response::HTTP_UNAUTHORIZED,
        array('Content-type' => 'application/json')
    );
}

}

当我调用此方法时,我有错误:

  

类型错误:传递给Symfony \ Component \ Security \ Core \ Encoder \ UserPasswordEncoder :: isPasswordValid()的参数1必须实现接口Symfony \ Component \ Security \ Core \ User \ UserInterface,给定字符串,在/ src / Service中调用第60行的/Login.php

为什么它告诉我在Symfony文档中有

时必须实现一些服务
  

isPasswordValid( string $ encoded, string $ raw,string $ salt),根据编码的密码检查原始密码。

我不明白这一点......

0 个答案:

没有答案