Laravel Passport自定义哈希机制

时间:2017-06-20 13:39:11

标签: php laravel-5 laravel-5.4 laravel-passport

我目前正在构建一个与更大的应用程序(Zend 1.x)一起使用的应用程序(使用Laravel)。

我正在使用Laravel护照进行API身份验证。我需要将Laravel Passport默认散列机制更改为Zend散列,以便进行身份验证。

有人可以指向我或我需要覆盖的API以使其运行吗?我更喜欢不编辑核心Laravel Passport代码。

我已经看到了创建自定义用户提供程序和修改validateCredentials()方法的建议,但这些都是针对核心Laravel的。

我已经在User类中使用findForPassport方法来覆盖用户名字段。

public function findForPassport($username)
{
    return $this->where('email', $username)->first();
}

1 个答案:

答案 0 :(得分:2)

对于任何想知道的人,您可以在User类中覆盖2个方法(可能更多)来处理自定义Laravel Passport身份验证:

/**
 * Override the field which is used for username in the authentication
 */
public function findForPassport($username)
{
    return $this->where('email', $username)->first();
}

/**
 * Add a password validation callback 
 * 
 * @param type $password
 * @return boolean Whether the password is valid
 */
public function validateForPassportPasswordGrant($password)
{
    $hasher = new HSAUserHasher(); // Or whomever does your hashing

    $result = $hasher->create_hash($password, $this->salt);
    $hashedPassword = $result['password'];

    return $hashedPassword == $this->password;
}

感谢@redviking在Laravel冗余论坛(https://larachat.slack.com)帮助我找到答案。