sanctum报错

AI摘要
这是一个关于Laravel 9.x和PHP 8.2环境下中间件配置问题的技术提问。用户按官方文档实现中间件后请求报错,但token创建正常。核心诉求是解决中间件报错问题。

1. 运行环境

1). 当前使用的 Laravel 版本?

9.x

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.2

php-fpm 版本:

3). 当前系统

4). 业务环境

5). 相关软件版本

2. 问题描述?

sanctum报错

按官网这样写中间件,如上图

请求后报错如下图:

sanctum报错

创建token是正常的,,,

3. 您期望得到的结果?

4. 您实际得到的结果?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

file

这里不应该是$routeMiddleware吗,你怎么是$routeMiddlewareAliases,改成$routeMiddleware看下

2周前 评论
隐德莱希 (楼主) 2周前
讨论数量: 15
Mutoulee

把你的app/Http/Kernel.php贴出来看看。

3周前 评论
隐德莱希 (楼主) 3周前

file

3周前 评论
Mutoulee 3周前
隐德莱希 (作者) (楼主) 3周前

‘api’ => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.’:api’,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],

3周前 评论
隐德莱希 (楼主) 3周前

原题接口地址打码了。。。你报错堆栈里面的站点路径还在呢,你这截图刚好就把下面能提供信息的地方给截掉了。

把完整的报错信息脱敏后再补充上来吧。

另外,说多少次了,提问不要用截图,直接贴原始报错。

3周前 评论

我新建了一个laravel9项目,没复现你的问题
composer create-project laravel/laravel:9.* => 9.5.2

composer require laravel/sanctum => ^3.3

php artisan vendor:publish –provider=”Laravel\Sanctum\SanctumServiceProvider”

php artisan migrate

\App\Http\Kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array<int, class-string|string>
     */
    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Illuminate\Http\Middleware\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array<string, array<int, class-string|string>>
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array<string, class-string|string>
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \App\Http\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];
}

routes/api.php

Route::middleware('auth:sanctum')->group(function () { 
    Route::get('/test', [\App\Http\Controllers\TestController::class, 'index']);
});

file

2周前 评论

在请求头加一个accept=application/json

2周前 评论

源碼調試一下應該就能大概知道問題是啥了

2周前 评论

如果你有cursor工具,这种问题分分钟解决

2周前 评论

file

这里不应该是$routeMiddleware吗,你怎么是$routeMiddlewareAliases,改成$routeMiddleware看下

2周前 评论
隐德莱希 (楼主) 2周前

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