繁体   English   中英

Controller:没有 axios api 调用的用户 ID?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM