首页 文章

内部请求需要Laravel Dingo身份验证JWT

提问于
浏览
0

我正在使用Laravel Dingo在Laravel控制器中使用API请求(内部),并且遇到了使用标头中的令牌进行身份验证的路由问题 . 我正在抛出异常,在请求中查找令牌 .

这是我的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在内部调用它时,我会找回典型的“令牌未找到”错误,当错过Authorization 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());
      }

我的问题是,我是否需要添加令牌,还是有办法为内部请求“关闭”jwt中间件? - >是方法不能在Dingo中处理所有这些吗?附: Auth :: user不为null,我已经检查过了 .

1 回答

  • 0

    解决了这个问题,您可以在调度出站请求之前手动设置标头 . 没有在文档中的任何地方看到该方法,但是后续工作 .

    $token = JWTAuth::fromUser(Auth::user());
      $registerResponse = $this->api->header('Authorization','Bearer:'.$token)->with($payload)->be(Auth::user())->post('/api/users/addEmployee');
    

相关问题