Laravel Passport + VueJS:未经身份验证的错误

时间:2017-12-05 07:31:34

标签: php laravel vuejs2 axios

我目前正在构建一个支持laravel 5.4的页面来管理用户。我使用刀片模板引擎完成了所有基本页面,如主页,登录,注册,仪表板。现在我正在建立用户管理页面。我已成功为此特定页面实施了VueJS 。所有组件都运行良好。

现在我面临的问题是使用Axios从API路由登录用户数据。起初我使用通常的api路由获取auth() - > user()数据,但它不起作用。

我了解到我必须使用Laravel Passport来执行此API操作。

这是我之后所做的步骤:

  1. 作曲家需要laravel / passport
  2. php artisan migrate
  3. php artisan passport:安装
  4. 将Laravel \ Passport \ HasApiTokens特征添加到App \ User模型
  5. 在AuthServiceProvider的引导方法中调用Passport :: routes方法
  6. 将api身份验证服务的驱动程序选项设置为passport
  7. 将CreateFreshApiToken中间件添加到您的Web中间件组
  8. 编辑了bootstrap.js文件,如下所示:
  9. window.axios.defaults.headers.common = {
        'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
        'X-Requested-With': 'XMLHttpRequest'
    };
    
    1. Axios代码:
    2. axios.post('/api/getmydata', {
          params: {
              type: 'raw'
          }
      })
      .then((response) => {
          console.log(response);
      }).catch((error) => {
          console.log(error);
      });
      
      1. 更改路线(api.php):
      2. Route::group(['middleware' => 'api'], function(){
            Route::post('getmydata', 'ApiController@test');
        });
        
        1. 在ApiController中添加了功能:
        2. public function test() {
              $user = Auth::user();
              return $user;
          }
          
          1. 这里的问题是axios以某种方式返回错误:未经身份验证
          2. 我的代码有什么问题吗? 或者还有其他方法可以实现这一目标吗?谢谢

1 个答案:

答案 0 :(得分:1)

在您的API请求的标头中发送访问令牌:

Application Type :application/json
Authentication : Bearer [Access-Token]