#laravel #post #postman #laravel-passport
Вопрос:
Я изучаю laravel и php в целом, и я наткнулся на использование паспорта Laravel в качестве аутентификации.
Я следовал документации, чтобы заменить значения в различных файлах конфигурации.
Функция входа в систему моего контроллера:
public function login(Request $request) {
$credentials = [
'email' => $request->email,
'password' => $request->password
];
if (auth()->attempt($credentials)) {
$token = auth()->user()->createToken('test@auth')->accessToken;
return response()->json(['token' => $token], 200);
} else {
return response()->json(['error' => 'UnAuthorised'], 401);
}
}
Мои веб-маршруты:
Route::group(['prefix' => 'auth'], function() {
Route::post('/login', [AuthController::class, 'login'])->name('login');
Route::post('/register', [AuthController::class, 'register'])->name('register');
});
когда я проверяю вход в систему почтальона,
POST > http://127.0.0.1:8000/auth/login
Headers > Accept - application/json
Body > FormData > email(test@gmail.com) / password(test)
Примечание: Я создал пользователя с помощью tinker и тоже хэшировал пароль.
Когда я отправляю запрос, он выдает мне сообщение об ошибке:
"message": "CSRF token mismatch.",
"exception": "Symfony\Component\HttpKernel\Exception\HttpException",
"file": "D:\workspaces\linneo\treffas\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php",
Ответ №1:
У меня была та же ошибка, но это было из-за неправильного URL-адреса.
Я попытался получить доступ: https://example.org/login
… вместо: https://example.org/api/login
А также убедитесь, что вы используете правильный протокол. Если вы попытаетесь отправить запрос GET, но не существует определений маршрутов, чтобы «перехватить» запрос, вы получите ту же ошибку.
Вот заголовки, которые я использую (это работает для меня):
Accept:application/json
Content-Type:application/json