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。

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

勤能补拙
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

{
    "message": "Unauthenticated."
}

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

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

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

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

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

{
    "message": "Unauthenticated."
}

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

4年前 评论
test2018 4年前

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