Мое приложение использует JWT для обработки аутентификации. В тестовом примере я пытаюсь войти в систему с двумя пользователями, получить токены для вызова других API. Но похоже, что он действует как 1 пользователь (первый)
Проверьте этот код, после входа в систему я вызываю API для получения информации о пользователе. Но он всегда возвращает информацию пользователя 1.
private function authenticate()
{
$user = factory(User::class)->create();
$token = \JWTAuth::fromUser($user);
return [
'Authorization' => 'Bearer ' . $token,
];
}
public function test2Login()
{
$user1 = $this->authenticate();
$user2 = $this->authenticate();
// This to make sure the token are different
$this->assertNotEquals($user1['Authorization'], $user2['Authorization']);
// Call API to get user information by the token
$response1 = $this->withHeaders($user1)->get('api/user');
$response2 = $this->withHeaders($user2)->get('api/user');
$userId1 = $response1->json()['data']['id'];
$userId2 = $response2->json()['data']['id'];
// Both response return information of the same user, so this testcase fail
$this->assertNotEquals($userId1, $userId2);
}
Я ожидаю, что $userId1
и $userId2
различны. На данный момент он возвращает тот же идентификатор.
Я отлаживаю в GetUserFromToken.php
, который является промежуточным ПО JWT. Токены, полученные в обоих запросах, одинаковы. Это странная причина в тестовом примере. Я убедился, что функция authenticate
возвращает 2 разных токена.
У кого-нибудь есть идеи? Спасибо