#laravel #laravel-7
#laravel #laravel-7
Вопрос:
Я использую Laravel sanctum для создания токенов API, которые могут использоваться для аутентификации запросов API, но когда я создаю токен и использую токен открытого текста для аутентификации запросов от postman, он всегда выдает мне 401.
вот моя конечная точка:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Я генерирую токены следующим образом:
$user = $request->user();
$abilities = [];
if ($request->read) $abilities[] = 'data:read';
if ($request->write) $abilities[] = 'data:write';
$token = $user->createToken($request->name, $abilities);
return response([
'token' => $token->plainTextToken,
'tokens' => $user->tokens
],201);
Я возвращаю токен palintext, но когда я использую его в postman, он терпит неудачу
Bearer 118586|IgKEMCTQq85Lb6k1km6HrewBo3wUS23OuTNHj13i
Я использую это промежуточное программное обеспечение в своей группе API
EnsureFrontendRequestsAreStateful::class
и я отключил его, но ничего не изменилось.
кто-нибудь может помочь с этим?
Ответ №1:
для тех, кто сталкивается с этой проблемой, вам необходимо изменить драйвер api с token
на sanctum
config/auth.php
guards => api => driver
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'sanctum',
'provider' => 'users',
'hash' => false,
],
],
Комментарии:
1. Я честно попробовал это, и в Postman я получаю сообщение «Это действие неавторизовано». Однако я добился некоторого успеха, не включив это и обновив файлы запросов модели (сохранить и обновить в моем экземпляре) до:
public function authorize() { return false; }