[英]Controller: No user id with axios api-call?
我使用 axios 在 vue 中构建了一个“保存”方法,用于 laravel(用于具有身份验证的登录用户):
save: function(status) {
axios.post('/api/save-question', this.Frage)
.then(res => {
this.$router.push('/');
})
}
api.php:
Route::post('/save-question','FragenController@store');
这导致 FragenController.php 中的controller方法“存储”:
在此方法中,我想验证用户 ID,以查看是否允许当前用户保存,如下所示:
public function store(Request $request)
{
$UserID = Auth::user()->id;
if($UserID=='1'){
//do the saving part
}
}
但这似乎不起作用,因为这个变量是空的。 现在我想知道,如果 axios 调用是由没有 id 的中立用户(不是当前登录的 laravel 用户)发出的。 是这样还是我做错了? 如果我手动设置 $UserID='1',保存效果很好。
由于您使用的是 API 路由,因此您的用户没有 session 并且您的后端无法知道哪个用户已通过身份验证。
解决方案是使用 API 令牌来验证您的用户是否经过身份验证。 Laravel 已经想到了这一点,这对我们来说很容易。
对于 Laravel 7+,它在名为 Laravel Sanctum 的单独 package 中提供:
在以前的版本中,它包含在 Laravel 中,在 API 身份验证下:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.