首页 文章

Laravel 5.3和VueJS 2认证

提问于
浏览
0

我使用Laravels默认身份验证来锁定routes / api.php文件中的一些路径 .

Route::get('/projects', 'ProjectController@index')->middleware('auth:api');

我通过PHP表单(而不是通过Vue的http请求)登录用户 . 这会创建会话,当我通过Vue提交HTTP请求时,我可以看到标头包含Cookie和X-CSRF-Token但是我一直收到401 {"error":"Unauthenticated."}

在我的config / auth中我将api驱动程序设置为'token'(尝试将其更改为'session'但确实有效:/)

根据我的理解和我在线阅读的内容,我应该能够使用默认的Laravel auth功能来完成Vue HTTP请求的API调用 .

this.$http.get('/api/projects')
   .then(response => {
     this.projects = response.body;
   })
   .catch (err => {
     console.log(err);
   });

我已经阅读了有关通过生成JWT令牌并在用户登录时将其存储在本地存储中进行身份验证的方法 . 这是我应该使用的方法还是我应该能够使用默认的Laravel Auth中间件来完成它?

希望我的问题有意义,任何帮助/建议将不胜感激 .

1 回答

  • 3

    auth:api 中间件不使用cookie,它使用 api_token param,可以通过 getBearer <token> 头传递 . 只需使用 web 中间件 .

    我想你需要以两种方式访问相同的路由 - 对于API用户和浏览器用户 . 那你为什么不为一个动作创建两条路线呢?

    // api group with /api prefix
    Route::get('/projects', 'ProjectController@index')->middleware('auth:api');
    
    // web group 
    Route::get('/projects', 'ProjectController@index')->middleware('web');
    

相关问题