我使用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驱动程序设置为'令牌' (尝试将此更改为'会话'但确实有效:/)
根据我的理解和我在线阅读的内容,我应该能够使用默认的Laravel auth功能来完成Vue HTTP请求的API调用。
this.$http.get('/api/projects')
.then(response => {
this.projects = response.body;
})
.catch (err => {
console.log(err);
});
我通过生成JWT令牌并在用户登录时将其存储在本地存储中来阅读有关身份验证的方法。这是我应该使用的方法还是我应该能够使用默认的Laravel Auth来完成它中间件?
希望我的问题有意义,任何帮助/建议都会受到赞赏。
答案 0 :(得分:3)
auth:api
中间件不使用Cookie,它使用api_token
param,可以通过get
或Bearer <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');