【发布时间】:2019-03-08 17:22:24
【问题描述】:
我使用 SHA1 哈希作为密码,如下所示: https://arjunphp.com/laravel-5-sha1-encryption-instead-of-bcrypt/
现在我正在使用护照 API 创建令牌,但由于哈希器现在已更改,它不允许我创建令牌。
Symfony\Component\Debug\Exception\FatalThrowableError: 传递给 Laravel\Passport\Bridge\UserRepository::__construct() 的参数 1 必须是 Illuminate\Hashing\HashManager 的实例,App\Libraries\ShaHash\SHAHasher 的实例在第 26 行的文件 C:\xampp1\htdocs\coursekartv2\vendor\laravel\passport\src\Bridge\UserRepository.php 中
如何覆盖UserRepository 以使用SHAHasher 而不是HashManager?或解决此问题的任何其他帮助。
【问题讨论】:
-
它明确表示
UserRepository::__construct() must be an instance of Illuminate\Hashing\HashManager所以传递UserRepositroy的变量实例。 -
@Iftikharuddin 我知道它为什么会出错,我的问题是如何覆盖 userrepositry 并强制它使用我的自定义哈希,即 SHAHasher
-
简单来说,我的问题是如果您使用 Laravel-Custom-Hashing 那么如何将其用于护照。因为它在使用我已经使用自定义更改的 hashManager 创建令牌时验证凭据。我无法传递 hashManager 实例。
-
如果你想覆盖我认为你需要用一个变量替换基本代码。例如,如果在基本代码中有
Class instance作为参数,那么只需将其替换为variable。试试这个,让我知道。 -
我不想更改基本代码,因为这不是最佳实践。但是是的,我已经尝试通过更改基本代码,它显然有效。感谢您抽出宝贵时间,让我知道我是否可以在不更改基本代码的情况下实现。