我正在通过以下方式测试我的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;
}
...
}
如果我评论这个块一切正常,但我不明白为什么它会让用户从之前的请求中获取?
答案 0 :(得分:0)
当前用户已经缓存在属性$user
中,因此TokenGuard不会发送另一个请求来检索用户,无论您使用哪个令牌,都会返回旧的。
正如您所看到的,该方法的最后一行将$ user属性设置为检索到的用户return $this->user = $user;
。