护照无法生成刷新令牌

时间:2019-04-18 11:38:52

标签: laravel

你能帮我吗?

我想在护照中生成刷新令牌。

仅当我使用Laravel中的默认哈希密码时,我才能生成刷新令牌。我的意思是这种情况:我创建了一个新的注册(从注册表格中),并尝试使用电子邮件和密码在Postman中调用api。

   $http = new Client();
        $response = $http->post('http://localhost/passport/public/oauth/token', [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => '2',
                'client_secret' => '**************',
                'username' => $request->email,
                'password' => $request->password,
                'scope' => ''
            ],


        ]);
  

但是问题是我不使用laravel通过的哈希密码   默认。我正在使用另一个哈希密码,并且在调用API时   http://localhost/passport/public/oauth/token在邮递员中显示   错误:

Client error: `POST http://localhost/passport/public/oauth/token` resulted in a `401 Unauthorized` response: {"error":"invalid_credentials","error_description":"The user credentials were incorrect.","message":"The user credential 

1 个答案:

答案 0 :(得分:0)

您应该通过扩展Illuminate\Hashing\AbstractHasher类并实现Illuminate\Contracts\Hashing\Hasher接口来创建一个新的哈希驱动程序作为独立类。

之后,您必须在HashManager类中注册自定义驱动程序。为此,请在服务提供商的 register 方法中输入:

// Include the class at the top of your service provider
use Illuminate\Hashing\HashManager;

// Then in the register method
HashManager::extend('driverName', function ($app) {
    // Replace the namespace and class with the one you have created in the first step
    // Or resolve it from the app container
    return new \App\Your\Custom\Hash\Driver();
});

完成后,可以通过设置config/hashing.php属性来设置在扩展driver文件中的HashManager时选择的相同的 driverName

通过这种方式,您在系统范围内替换了默认的bcrypt哈希,并且凭据匹配无需任何进一步修改即可工作。