За последние 24 часа нас посетили 19145 программистов и 1880 роботов. Сейчас ищут 862 программиста ...

Ошибка "The GET method is not supported for this route" при использовании Laravel Sanctum

Тема в разделе "Laravel", создана пользователем RsbAstana, 29 авг 2021.

  1. RsbAstana

    RsbAstana Новичок

    С нами с:
    1 апр 2021
    Сообщения:
    11
    Симпатии:
    2
    Всем привет!
    У меня в проекте (Laravel 8 с установленным Laravel Sanctum, PHP 7.3) выходит
    ошибка "The GET method is not supported for this route" при использовании Laravel Sanctum.
    Api.php:
    PHP:
    1. Route::middleware('auth:sanctum')->get('/v1/cabinet/user', [CabinetController::class, 'userdata']);
    CabinetController:
    PHP:
    1. <?php
    2.  
    3. namespace App\Http\Controllers;
    4.  
    5. use Illuminate\Http\Request;
    6.  
    7. class CabinetController extends Controller
    8. {
    9.     public function userdata(Request $request)
    10.     {
    11.         return $request->user();
    12.     }
    13.  
    14.     public function logout()
    15.     {
    16.         if (Auth()->check()) {
    17.             Auth::user()->token()->delete();
    18.             return response([
    19.                 'message' => 'Пользователь разлогинен',
    20.             ], 200);
    21.         }
    22.     }
    23.  
    24. }
    Как исправить? img-2021-08-30-00-41-45.png
     
    #1 RsbAstana, 29 авг 2021
    Последнее редактирование: 29 авг 2021
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.810
    Симпатии:
    1.332
    Адрес:
    Лень
    отправь POST запрос, как требует правило при работе с auth
     
  3. RsbAstana

    RsbAstana Новичок

    С нами с:
    1 апр 2021
    Сообщения:
    11
    Симпатии:
    2
    отправлял через Postman, ставил POST - та же ошибка.
    --- Добавлено ---
    Это нормально два Middleware: api и App\Http\Middleware\Authenticate:sanctum?
    PHP:
    1. +--------+-----------+--------------------------------------------------------+--------------------+------------------------------------------------------------+------------------------------------------+
    2. | Domain | Method    | URI                                                    | Name               | Action                                                     | Middleware                               |
    3. +--------+-----------+--------------------------------------------------------+--------------------+------------------------------------------------------------+------------------------------------------+
    4. |        | GET|HEAD  | /                                                      |                    | Closure                                                    | web                                      |
    5. |        | GET|HEAD  | api/test                                               |                    | App\Http\Controllers\IndexController@test                  | api                                      |
    6. |        | POST      | api/v1/auth/login                                      | login              | App\Http\Controllers\Auth\LoginController@login            | api                                      |
    7. |        | POST      | api/v1/auth/register                                   |                    | App\Http\Controllers\Auth\RegisterController@register      | api                                      |
    8. |        | POST      | api/v1/cabinet/logout                                  | logout.api         | App\Http\Controllers\CabinetController@logout              | api                                      |
    9. |        |           |                                                        |                    |                                                            | App\Http\Middleware\Authenticate:sanctum |
    10. |        | GET|HEAD  | api/v1/cabinet/user                                    |                    | App\Http\Controllers\CabinetController@userdata            | api                                      |
    11. |        |           |                                                        |                    |                                                            | App\Http\Middleware\Authenticate:sanctum |
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.594
    Симпатии:
    1.764
    Да, нормально. Я в таких случаях прохожу отладчиком весь путь фреймворка по разбору роутов, обычно находится, кто мешает. Может к примеру порядок следования записей в routes.php/api.php мешать
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.810
    Симпатии:
    1.332
    Адрес:
    Лень
    В роутинге карты тоже ставил POST метод ? У тебя по этому адресу вижу только GET|HEAD
     
  6. RsbAstana

    RsbAstana Новичок

    С нами с:
    1 апр 2021
    Сообщения:
    11
    Симпатии:
    2
    Нашел решение:
    Я добавлял токен, только брал его из таблицы personal_access_tokens,
    а надо было тот который возвращает роут /login.

    На видео в конце показано как правильно добавить токен при роуте:
     

    Вложения:

    • Image1.png
      Image1.png
      Размер файла:
      46,7 КБ
      Просмотров:
      5
    • Image2.png
      Image2.png
      Размер файла:
      41,7 КБ
      Просмотров:
      5
    • Image3.png
      Image3.png
      Размер файла:
      52,9 КБ
      Просмотров:
      5