【问题标题】:Laravel Passport Custom Hashing MechanismLaravel Passport 自定义哈希机制
【发布时间】:2017-11-28 22:00:26
【问题描述】:

我目前正在构建一个与更大的应用程序(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();
}

【问题讨论】:

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


    【解决方案1】:

    对于任何想知道的人,您可以覆盖 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;
    }
    

    感谢 Laravel 松弛论坛 (https://larachat.slack.com) 上的 @redviking 帮助我找到答案。

    【讨论】:

      猜你喜欢
      • 2019-03-08
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多