对于中间件 bindings,api.throttle,api.auth 的困惑
路由文件中( routes/api.php )一共使用了三次个中间件bindings, api.throttle, api.auth。
Kernel 文件中定义的API 中间件组中只有throttle和bindings,为什么调用时是 'middleware' => 'bindings'/ 'middleware' => 'api.throttle'?为何不是 'middleware' => 'api.bindings'(报错),'middleware' => 'throttle'(不报错)
api.auth 在API 中间件组中并未定义,为什么还能使用?
app/Http/Kernel.php
.
.
.
// 定义中间件组
protected $middlewareGroups = [
// Web 中间件组,应用于 routes/web.php 路由文件
'web' => [
.
.
.
],
// API 中间件组,应用于 routes/api.php 路由文件
'api' => [
// 使用别名来调用中间件
// 请见:https://learnku.com/docs/laravel/5.5/middleware#为路由分配中间件
'throttle:60,1',
'bindings'
],
];
routes/api.php
$api->version('v1', [
'namespace' => 'App\Http\Controllers\Api',
'middleware' => 'bindings'
], function($api) {
$api->group([
'middleware' => 'api.throttle',
'limit' => config('api.rate_limits.sign.limit'),
'expires' => config('api.rate_limits.sign.expires')
], function($api){
.
.
.
// 需要 token 验证的接口
$api->group(['middleware' => 'api.auth'], function($api) {
.
.
.
});
});
});
推荐文章: