Как исправить Laravel "Метод Post не поддерживается для этого маршрута"? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь создать аутентификацию, используя Laravel Passport, я настроил все правильно, как указано в официальной документации.Метод GET Route работает отлично (см. Код ниже), но когда я пробую метод POST Route, я всегда получаю эту ошибку:

Метод POST не поддерживается для этого маршрута.Поддерживаемые методы: GET, HEAD.

PS: я использую Почтальон для теста.

Я пытался включить токен CSRF, но ничего не происходит, и я получаю ту же ошибку.

Контроллер

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);

        if ($validator->fails()) {
            return response(['errors' => $validator->errors()->all()], 422);
        }

        $request['password'] = Hash::make($request['password']);
        $user = User::create($request->toArray());
        $token = $user->createToken('Laravel Password Grant Client')->accessToken;
        $response = ['token' => $token];

        return response($response, 200);
    }

    public function login(Request $request)
    {
        $user = User::where('email', $request->email)->first();

        if ($user) {
            if (Hash::check($request->password, $user->password)) {
                $token = $user->createToken('Laravel Password Grant Client')->accessToken;
                $response = ['token' => $token];

                return response($response, 200);
            } else {
                $response = "Password missmatch";

                return response($response, 422);
            }

        } else {
            $response = 'User does not exist';

            return response($response, 422);
        }
    }

    public function logout(Request $request)
    {
        $token = $request->user()->token();
        $token->revoke();
        $response = 'You have been succesfully logged out!';

        return response($response, 200);
    }
}

Маршруты

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('/login', 'Api\AuthController@login')->name('login.api');
Route::post('/register', 'Api\AuthController@register')->name('register.api');

Я ожидаю регистрации пользователя, и он возвращает токен аутентификации, но он показывает мне «Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD.»

1 Ответ

0 голосов
/ 25 марта 2019

Эта строка должна быть в api.php

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
...