【发布时间】:2020-11-05 11:58:58
【问题描述】:
我目前在中间件方面有点问题。
我正在使用 JSON API 包,我正在尝试从标头中传递一些数据并将其与请求合并。
这似乎在一个路由上工作得非常好,但在下一个路由上似乎请求完全是空的,尽管它是在相同的路由方法中定义的。
这是我的路由定义文件:
JsonApi::register('default')->authorizer('default')->middleware('tenant.identifier')->routes(function (RouteRegistrar $api) {
$api->resource('categories')->readOnly();
});
我有中间件:
if (($sub = $request->header('X-Tenant-Identifier')) === null) {
return new Response('Tenant identifier is missing from the request', Response::HTTP_BAD_REQUEST);
}
if (($tenant = Tenant::query()->where('subdomain', $sub)->first()) === null) {
return new Response('Invalid tenant identifier', Response::HTTP_BAD_REQUEST);
}
$request->merge([
'tenant' => $tenant,
'requiresTenant' => true
]);
return $next($request);
如果我转到/categories 并执行dd(request()->all()) 我可以看到合并的内容,但是如果我转到/categories/1 我看到dd(request()->all()) 是一个空数组。
这是处理这种想法的正确方法,与请求合并还是我应该执行以下操作:
app()->instance(Tenant::class, $tenant)
编辑:执行上述操作并执行租户实例也不起作用,并且租户为空,但是在中间件内部执行 dd($tenant) 我可以看到它已解决...
【问题讨论】:
标签: laravel request middleware