laravel8.x使用sanctum进行API验证出现路由错误

路由文件如下图:

<?php

use Illuminate\Support\Facades\Route;
use \App\Http\Controllers\V1\AuthController;

Route::group(['prefix' => 'v1'], function ($api) {
    $api->post('auth/login', [AuthController::class, 'login'])->name('login');

    $api->post('auth/logout', [AuthController::class, 'logout'])->middleware('auth:sanctum');
    $api->post('user', [AuthController::class, 'index'])->middleware('auth:sanctum');
});

控制器文件如下:

<?php

namespace App\Http\Controllers\V1;

use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class AuthController extends Controller
{

    public function login(Request $request)
    {
        $request->validate([
            'email'    => 'required|email',
            'password' => 'required',
        ]);

        $user = User::query()->where('email', $request->get('email'))->first();
        if (!$user || !Hash::check($request->get('password'), $user->password)) {
            return $this->error('These credentials do not match our records.', 400);
        }

        $token = $user->createToken('worker-mina-pro')->plainTextToken;

        return $this->ok([
            'user'  => $user,
            'token' => $token,
        ]);
    }

    public function logout()
    {
        $result = auth()->user()->currentAccessToken()->delete();
        if ($result) {
            return $this->ok('success');
        }
    }

    public function index()
    {
        $user = auth()->user();

        return $this->ok($user);
    }
}

现在请求登录是正常的,每次会生成token, 然后拿着正确的token去请求另外两个接口是正确的,通的。 但是当我把token改一下,改成肯定不对的之后,再请求另外两个接口的时候就会出现如下错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The GET method is not supported for this route. Supported methods: POST. in file /var/www/html/worker-mina-server/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php on line 117。

刚开始以为路由写法问题改了几种方式,都是一样的结果。
请帮忙查看一下是哪里的问题? 谢谢了。

勤能补拙
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

目前问题已解决,首先请求header 里面加上 Accept application/json,然后 php artisan route:clear清一下路由缓存,重新请求就好了。

{
    "message": "Unauthenticated."
}

错误的token请求时候该有的提示是这个。

3年前 评论
test2018 3年前
讨论数量: 2

错误信息很明显啊 user.index 路由改成get试试 最好是所有路由一律用 any :joy:

3年前 评论
feivorid (楼主) 3年前

目前问题已解决,首先请求header 里面加上 Accept application/json,然后 php artisan route:clear清一下路由缓存,重新请求就好了。

{
    "message": "Unauthenticated."
}

错误的token请求时候该有的提示是这个。

3年前 评论
test2018 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!