mirror of
https://github.com/elyby/accounts.git
synced 2024-12-27 07:30:18 +05:30
Токен, выписанный на сессию без запоминания должен истекать дольше времени
This commit is contained in:
parent
ae3c3b88de
commit
e756dbacd6
@ -63,6 +63,9 @@ class Component extends YiiUserComponent {
|
|||||||
$token->addClaim(new SessionIdClaim($session->id));
|
$token->addClaim(new SessionIdClaim($session->id));
|
||||||
} else {
|
} else {
|
||||||
$session = null;
|
$session = null;
|
||||||
|
// Если мы не сохраняем сессию, то токен должен жить подольше, чтобы
|
||||||
|
// не прогорала сессия во время работы с аккаунтом
|
||||||
|
$token->addClaim(new Claim\Expiration(time() + 60 * 60 * 24 * 7));
|
||||||
}
|
}
|
||||||
|
|
||||||
$jwt = $this->serializeToken($token);
|
$jwt = $this->serializeToken($token);
|
||||||
|
@ -78,10 +78,7 @@ class LoginForm extends ApiForm {
|
|||||||
$account->save();
|
$account->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var \api\components\User\Component $component */
|
return Yii::$app->user->login($account, $this->rememberMe);
|
||||||
$component = Yii::$app->user;
|
|
||||||
|
|
||||||
return $component->login($account, $this->rememberMe);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getAccountClassName() {
|
protected function getAccountClassName() {
|
||||||
|
@ -9,6 +9,7 @@ use Codeception\Specify;
|
|||||||
use common\models\AccountSession;
|
use common\models\AccountSession;
|
||||||
use Emarref\Jwt\Algorithm\AlgorithmInterface;
|
use Emarref\Jwt\Algorithm\AlgorithmInterface;
|
||||||
use Emarref\Jwt\Claim\ClaimInterface;
|
use Emarref\Jwt\Claim\ClaimInterface;
|
||||||
|
use Emarref\Jwt\Claim\Expiration;
|
||||||
use Emarref\Jwt\Token;
|
use Emarref\Jwt\Token;
|
||||||
use tests\codeception\api\unit\DbTestCase;
|
use tests\codeception\api\unit\DbTestCase;
|
||||||
use tests\codeception\common\_support\ProtectedCaller;
|
use tests\codeception\common\_support\ProtectedCaller;
|
||||||
@ -50,8 +51,13 @@ class ComponentTest extends DbTestCase {
|
|||||||
$result = $this->component->login($account, false);
|
$result = $this->component->login($account, false);
|
||||||
expect($result)->isInstanceOf(LoginResult::class);
|
expect($result)->isInstanceOf(LoginResult::class);
|
||||||
expect($result->getSession())->null();
|
expect($result->getSession())->null();
|
||||||
expect(is_string($result->getJwt()))->true();
|
|
||||||
expect($result->getIdentity())->equals($account);
|
expect($result->getIdentity())->equals($account);
|
||||||
|
$jwt = $result->getJwt();
|
||||||
|
expect(is_string($jwt))->true();
|
||||||
|
$token = $this->component->parseToken($jwt);
|
||||||
|
$claim = $token->getPayload()->findClaimByName(Expiration::NAME);
|
||||||
|
// Токен выписывается на 7 дней, но мы проверим хотя бы на 2 суток
|
||||||
|
expect($claim->getValue())->greaterThan(time() + 60 * 60 * 24 * 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->specify('success get LoginResult object with session value if rememberMe is true', function() {
|
$this->specify('success get LoginResult object with session value if rememberMe is true', function() {
|
||||||
@ -60,9 +66,14 @@ class ComponentTest extends DbTestCase {
|
|||||||
$result = $this->component->login($account, true);
|
$result = $this->component->login($account, true);
|
||||||
expect($result)->isInstanceOf(LoginResult::class);
|
expect($result)->isInstanceOf(LoginResult::class);
|
||||||
expect($result->getSession())->isInstanceOf(AccountSession::class);
|
expect($result->getSession())->isInstanceOf(AccountSession::class);
|
||||||
expect(is_string($result->getJwt()))->true();
|
|
||||||
expect($result->getIdentity())->equals($account);
|
expect($result->getIdentity())->equals($account);
|
||||||
expect($result->getSession()->refresh())->true();
|
expect($result->getSession()->refresh())->true();
|
||||||
|
$jwt = $result->getJwt();
|
||||||
|
expect(is_string($jwt))->true();
|
||||||
|
$token = $this->component->parseToken($jwt);
|
||||||
|
$claim = $token->getPayload()->findClaimByName(Expiration::NAME);
|
||||||
|
// Токен выписывается на 1 час, т.к. в дальнейшем он будет рефрешиться
|
||||||
|
expect($claim->getValue())->lessOrEquals(time() + 3600);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user