你能帮我吗?
我想在护照中生成刷新令牌。
仅当我使用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
答案 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哈希,并且凭据匹配无需任何进一步修改即可工作。