我已经建立了一个项目,并在
api.php
路由文件中编写了一些路由。我创建了一个中间件,将中间件注册到Kernel.php
文件中,然后在api.php
路由组中实现中间件。但是,当我点击路线时,中间件没有收到请求。我什至遵循了 Laravel 文档中的实现步骤,但问题仍然相同 – 中间件没有收到请求。
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"]);
});
protected $routeMiddleware = [
'api_auth' => \App\Http\Middleware\ApiAuthentication::class,
];
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'));
});
}
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);
}
}
我在这个问题上花费了大量时间,但无法找出问题所在。
尝试
Route::middleware(['api_auth'])->group(function () {
Route::get("/categories", ["uses" => "ApiController@getCategories"]);
Route::get("/child/categories", ["uses" => "ApiController@getChildCategories"]);
});