Представьте себе сценарий, в котором каждый раз, когда вам нужен доступ к определенной части службы (которую можно получить с помощью методов REST API; например, получить доступ и обновить токены), вы записываете эти токены в токены JWT и обновляете файлы cookie в своем браузере, чтобы вы могли может получить доступ к этим токенам с AbpSession
.
private string CreateAccessToken(IEnumerable<Claim> claims, TimeSpan? expiration = null)
{
var now = DateTime.UtcNow;
var jwtSecurityToken = new JwtSecurityToken(
issuer: _configuration.Issuer,
audience: _configuration.Audience,
claims: claims,
notBefore: now,
expires: now.Add(expiration ?? _configuration.Expiration),
signingCredentials: _configuration.SigningCredentials
);
return new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
}
При создании токена JWT вы получаете AuthenticateResultModel
в методе Authenticate
, который вызывается при входе пользователя в систему.
public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model)
{
// ...
return new AuthenticateResultModel
{
AccessToken = accessToken,
EncryptedAccessToken = GetEncrpyedAccessToken(accessToken),
ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds,
UserId = (long)AbpSession.UserId
};
}
В случае успеха вызывается метод login
.
private login(accessToken: string, encryptedAccessToken: string, expireInSeconds: number, rememberMe?: boolean): void {
var tokenExpireDate = rememberMe ? (new Date(new Date().getTime() + 1000 * expireInSeconds)) : undefined;
this._tokenService.setToken(
accessToken,
tokenExpireDate
);
this._utilsService.setCookieValue(
AppConsts.authorization.encrptedAuthTokenName,
encryptedAccessToken,
tokenExpireDate,
abp.appPath
);
}
Насколько я понимаю, в CreateAccessToken
вы сериализуете токен JWT и устанавливаете значения cookie в вашем браузере с помощью функции login
.
Теперь, что мне интересно, когда я создаю другой токен и устанавливаю значения cookie, я перезаписываю предыдущий токен? Или предыдущий токен удален?
Я не могу найти никакой информации по этой теме, и причина, по которой я спрашиваю, состоит в том, что я буду много раз обновлять этот токен в течение срока службы приложения, и я беспокоюсь о влиянии памяти и памяти.