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. 您实际得到的结果?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

file

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

1个月前 评论
隐德莱希 (楼主) 1个月前
讨论数量: 15
Mutoulee

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

1个月前 评论
隐德莱希 (楼主) 1个月前

file

1个月前 评论
Mutoulee 1个月前
隐德莱希 (作者) (楼主) 1个月前

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

1个月前 评论
隐德莱希 (楼主) 1个月前

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

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

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

1个月前 评论

我新建了一个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

1个月前 评论

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

1个月前 评论

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

1个月前 评论

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

1个月前 评论

file

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

1个月前 评论
隐德莱希 (楼主) 1个月前

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