Laravel 内部请求需要 Dingo 身份验证 JWT
Laravel Dingo Authentication JWT Required on Internal Requests
我正在使用 Laravel Dingo 在 Laravel 控制器内使用 API 请求(内部),并且遇到了使用 [=中的令牌进行身份验证的路由问题=31=]。我收到异常抛出,正在请求中寻找令牌。
这是我的 API 路线:
$api = app('Dingo\Api\Routing\Router');
$api->version(['v1'], function ($api) {
$api->post('/users/addEmployee', "App\Http\Controllers\Api\UserController@storeEmployee")->middleware('jwt.auth');
}
注意添加到调用中的中间件。使用 Postman 时,这可以 100% 工作并添加一名新员工。
在 Dingo 内部调用它时,我得到了典型的 'token not found' 错误,当缺少授权 Header 时,我通常会从 API 中看到该错误。
try{
$dispatcher = app('Dingo\Api\Dispatcher');
$payload = [
'name' => $request->name,
'email' => $request->email,
];
$registerResponse = $dispatcher->be(Auth::user())->with($payload)->post('/api/users/addEmployee');
catch( InternalHttpException $internal ){
echo($internal->getResponse());die();
return Redirect::back()->withInput()->withErrors($v->getErrors());
}
我的问题是,我需要添加令牌,还是有办法 'turn off' jwt 中间件用于内部请求? ->be 方法是否不能在 Dingo 中处理所有这些? p.s。 Auth::user 不为空,我已经检查过了。
已解决,您可以在发送出站请求之前手动设置 headers。没有在文档中的任何地方看到该方法,但以下是有效的。
$token = JWTAuth::fromUser(Auth::user());
$registerResponse = $this->api->header('Authorization','Bearer:'.$token)->with($payload)->be(Auth::user())->post('/api/users/addEmployee');
我正在使用 Laravel Dingo 在 Laravel 控制器内使用 API 请求(内部),并且遇到了使用 [=中的令牌进行身份验证的路由问题=31=]。我收到异常抛出,正在请求中寻找令牌。
这是我的 API 路线:
$api = app('Dingo\Api\Routing\Router');
$api->version(['v1'], function ($api) {
$api->post('/users/addEmployee', "App\Http\Controllers\Api\UserController@storeEmployee")->middleware('jwt.auth');
}
注意添加到调用中的中间件。使用 Postman 时,这可以 100% 工作并添加一名新员工。
在 Dingo 内部调用它时,我得到了典型的 'token not found' 错误,当缺少授权 Header 时,我通常会从 API 中看到该错误。
try{
$dispatcher = app('Dingo\Api\Dispatcher');
$payload = [
'name' => $request->name,
'email' => $request->email,
];
$registerResponse = $dispatcher->be(Auth::user())->with($payload)->post('/api/users/addEmployee');
catch( InternalHttpException $internal ){
echo($internal->getResponse());die();
return Redirect::back()->withInput()->withErrors($v->getErrors());
}
我的问题是,我需要添加令牌,还是有办法 'turn off' jwt 中间件用于内部请求? ->be 方法是否不能在 Dingo 中处理所有这些? p.s。 Auth::user 不为空,我已经检查过了。
已解决,您可以在发送出站请求之前手动设置 headers。没有在文档中的任何地方看到该方法,但以下是有效的。
$token = JWTAuth::fromUser(Auth::user());
$registerResponse = $this->api->header('Authorization','Bearer:'.$token)->with($payload)->be(Auth::user())->post('/api/users/addEmployee');