TokenGuard(api)在第二次请求后检索旧用户

时间:2016-06-02 10:13:53

标签: api laravel laravel-5.2

我正在通过以下方式测试我的laravel(5.2)api,在同一个测试中发出两个请求(防范路线:api):

$this->getJson('v1/ratings', 'POST');
// v1/ratingsapi_token=JcM6ftg6icLPGAbUX9E37HGSYsrAYU0GH1AJhoYxEfIi5LwhalRBf0iAcmJ2

然后我用另一个令牌发出第二个请求:

// v1/ratings?api_token=JgYdM890bIPHVYsiddHUp5vXaG9C1qhjLcYdZ1UioFZpPvPANGMqw26RJ3RB

但我仍然使用相同的用户登录...

它来自Illuminate \ Auth \ TokenGuard @ user:

public function user()
    {
        // If we've already retrieved the user for the current request we can just
        // return it back immediately. We do not want to fetch the user data on
        // every call to this method because that would be tremendously slow.
        if (! is_null($this->user)) {
    // HERE IT GOES
            return $this->user;
        }
    ...
}

如果我评论这个块一切正常,但我不明白为什么它会让用户从之前的请求中获取?

1 个答案:

答案 0 :(得分:0)

当前用户已经缓存在属性$user中,因此TokenGuard不会发送另一个请求来检索用户,无论您使用哪个令牌,都会返回旧的。

正如您所看到的,该方法的最后一行将$ user属性设置为检索到的用户return $this->user = $user;