我使用jwt web令牌在Laravel 5.3中构建了一个api。如果我想测试这个,我要在每个请求之前添加它:
if ((\App::environment() == 'testing') && array_key_exists("HTTP_AUTHORIZATION", Request::server())) {
JWTAuth::setRequest(\Route::getCurrentRequest());
}
如果我将它添加到我的控制器中的构造函数中它正在工作。但是,当我将其添加到中间件时,我的所有测试都失败了。
我已将中间件添加到$routeMiddleware
中的kernel.php
数组中。中间件看起来像这样:
class TestingKeepRequest
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ((\App::environment() == 'testing') && array_key_exists("HTTP_AUTHORIZATION", Request::server())) {
JWTAuth::setRequest(\Route::getCurrentRequest());
dd('test');
}
$next($request);
}
}
当dd('test');
if statement
正在到达时dd('test');
。
正在我的路线文件中分配中间件,如下所示:
Route::group(['middleware' => ['testing', 'active', 'throttle']], function () { //etc....
那么为什么这个在控制器的构造函数中工作而不是在中间件中呢?