#laravel
#laravel
Вопрос:
Не могли бы вы мне помочь?
Я хочу сгенерировать токен обновления в паспорте.
Я могу сгенерировать токен обновления, только если я использую хэш-пароль по умолчанию из Laravel. Я имею в виду следующую ситуацию: я создаю новую регистрацию (из регистрационной формы) и пытаюсь вызвать api в Postman как по электронной почте, так и по паролю.
$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 в postman он показывает эту
ошибку :
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. попробуйте добавить это в запрос ‘refresh_token’ => ‘the-refresh-token’
Ответ №1:
Вы должны создать новый драйвер хеширования как отдельный класс, расширив IlluminateHashingAbstractHasher
класс и реализовав IlluminateContractsHashingHasher
интерфейс.
После этого вы должны зарегистрировать свой пользовательский драйвер в классе HashManager. Для этого в методе register поставщика услуг поместите:
// Include the class at the top of your service provider
use IlluminateHashingHashManager;
// 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 AppYourCustomHashDriver();
});
После того, как вы это сделаете, вы можете установить то же имя драйвера, которое вы выбрали при расширении HashManager в config/hashing.php
файле, установив driver
атрибут.
Таким образом, вы заменили хеширование bcrypt по умолчанию в масштабах всей системы, и сопоставление учетных данных должно работать без каких-либо дальнейших изменений.