php - 在 Laravel 5.8 中指定自定义中间件执行顺序
问题描述
我有一个自定义中间件,用于识别应用程序中的租户。当我在没有“auth”中间件的情况下调用端点时,它会正确识别租户并可以根据需要读取表。但是,我需要在确定租户后执行身份验证(即,为身份验证用户查询正确的数据库)我似乎看不到我的配置哪里出错了。我收到一条错误消息:
未定义索引:数据库
但这是因为我的 identifyTenant 中间件尚未运行以在 auth 中间件尝试进行身份验证时设置数据库。
路由组
Route::group(['middleware' => ['tenant', 'auth', 'manager_admin']], function () {
Route::resource('invoice', 'InvoiceController');});
文档中建议的 kernel.php 的优先级中间件部分
protected $middlewarePriority = [
// --- Added identify m.ware at the top to run first.
\App\Http\Middleware\IdentifyTenant::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\Authenticate::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];
kernel.php 的路由中间件部分
protected $routeMiddleware = [
'tenant' => \App\Http\Middleware\IdentifyTenant::class,
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
我正在使用 laravel 5.8。
解决方案
你不能试试这个
Route::group(['middleware' => ['tenant']], function () {
Route::group(['middleware' => ['auth']], function () {
Route::group(['middleware' => ['manager_admin']], function () {
Route::resource('invoice', 'InvoiceController');
});
});
});
或者
Route::resource('invoice', 'InvoiceController')->middleware('tenant')->middleware('auth')->middleware('manager_admin');
推荐阅读
- c++ - 缩小从 int 到 unsigned char 的转换
- reactjs - 如何正确使用 JSX 进行反应,我收到一个错误
- java - 如何从匿名类更新java中的全局变量
- graphics - 找到所有非共线点
- javascript - 侧面弹出窗口
- c++ - 反向传播在 C++ 神经网络中给出奇怪的值
- python - 如何检测无线(不是蓝牙)连接?
- dialogflow-es - 有没有办法在 Discord 聊天中添加快速回复/建议筹码(如 Google 上的操作)
- google-cloud-run - Chunked Transfer Encoding not working, response completely buffered by GFE
- esp8266 - ESP8266 5v 继电器 USB 断开问题