Laravel паспорт логин CSRF маркер несоответствие в почтальоне

#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