中间件仅在 Laravel 9.19 中的 API 路由上无法运行

问题描述 投票:0回答:1

我已经建立了一个项目,并在

api.php
路由文件中编写了一些路由。我创建了一个中间件,将中间件注册到
Kernel.php
文件中,然后在
api.php
路由组中实现中间件。但是,当我点击路线时,中间件没有收到请求。我什至遵循了 Laravel 文档中的实现步骤,但问题仍然相同 – 中间件没有收到请求。

路线/api.php

Route::group(["middleware" => "api_auth"], function () {
    Route::get("/categories", ["uses" => "ApiController@getCategories"]);
    Route::get("/child/categories", ["uses" => "ApiController@getChildCategories"]);
});

api.php
路由中实现中间件的另一种方法

Route::middleware(\App\Http\Middleware\ApiAuthentication::class)->group(function () {
    Route::get("/categories", ["uses" => "ApiController@getCategories"]);
    Route::get("/child/categories", ["uses" => "ApiController@getChildCategories"]);
});

应用程序/Http/Kernel.php

protected $routeMiddleware = [
    'api_auth' => \App\Http\Middleware\ApiAuthentication::class,
];

应用程序/提供商/RouteServiceProvider.php

public function boot() {
    $this->configureRateLimiting();

    $this->routes(function () {
        Route::middleware('api')
                ->middleware("throttle:30:1")// 60requests in 2 mins
                ->namespace('App\Http\Controllers')
                ->prefix('api')
                ->group(base_path('routes/api.php'));

        Route::middleware('web')
                ->namespace('App\Http\Controllers\Admin')
                ->group(base_path('routes/web.php'));
    });
}

应用程序/Http/Middleware/ApiAuthentication.php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class ApiAuthentication {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next) {
        $locale = "ar";
        \Log::info("-- middware locale setting --{$locale}");
        app('translator')->setLocale($locale);
        return $next($request);
    }
}

我在这个问题上花费了大量时间,但无法找出问题所在。

php laravel laravel-9 laravel-middleware laravel-api
1个回答
0
投票

尝试

Route::middleware(['api_auth'])->group(function () {
   Route::get("/categories", ["uses" => "ApiController@getCategories"]);
   Route::get("/child/categories", ["uses" => "ApiController@getChildCategories"]);
});
© www.soinside.com 2019 - 2024. All rights reserved.