Я реализовал свою собственную реализацию ITicketStore в. NET Ядро, которое обрабатывает сохранение файлов cookie сеанса в базе данных redis. Мои ключи представляют собой простой guid:
public async Task<string> StoreAsync(AuthenticationTicket ticket)
{
var log = new StringWriter();
var guid = Guid.NewGuid();
var key = "MyCustomCache"+ guid.ToString();
await RenewAsync(key, ticket);
return key;
}
public Task RenewAsync(string key, AuthenticationTicket ticket)
{
var options = new DistributedCacheEntryOptions();
var expiresUtc = ticket.Properties.ExpiresUtc;
if (expiresUtc.HasValue)
{
options.SetAbsoluteExpiration(expiresUtc.Value);
}
byte[] val = SerializeToBytes(ticket);
_cache.Set(key, val, options);
return Task.FromResult(0);
}
Однако в браузере, когда я проверяю значение cook ie, оно кажется каким-то образом закодировано / зашифровано (вместо сгенерированного мной guid):
Когда повар ie передается в мое приложение, я замечаю, что оно преобразовано обратно в исходное значение, которое я создал в StoreAsyn c:
public Task<AuthenticationTicket> RetrieveAsync(string key)
{
// Key passed in here will not be the value in the image above. Instead it will be what was
// generated in StoreAsync
AuthenticationTicket ticket;
byte[] bytes = null;
bytes = _cache.Get(key);
ticket = DeserializeFromBytes(bytes);
return Task.FromResult(ticket);
}
Что именно. NET Ядро делает с моими ключами шифровать / кодировать ключ? Повлияет ли это на мою способность балансировать нагрузку в моем приложении? Я знаю, что в механизме хранения сеансов по умолчанию. NET Ядро шифрует куки-файлы сеансов с помощью ключа c для каждой машины.