/// <summary> /// The cookie value's bindings. /// </summary> public static string GetSalt(this HttpContext context, ICaptchaCryptoProvider captchaProtectionProvider) { var ip = context.Connection.RemoteIpAddress; var userAgent = (string)context.Request.Headers[HeaderNames.UserAgent]; var issueDate = DateTime.Now.ToString("yyyy_MM_dd", CultureInfo.InvariantCulture); var name = typeof(ProvidersExtensions).Name; var salt = $"::{issueDate}::{name}::{ip}::{userAgent}"; return(captchaProtectionProvider.Hash(salt).HashString); }
/// <summary> /// Serialize the given data to an string. /// </summary> public string Serialize(object data) { var resultBytes = JsonSerializer.SerializeToUtf8Bytes(data, new JsonSerializerOptions { WriteIndented = false, IgnoreNullValues = true }); var token = _captchaProtectionProvider.Hash(Encoding.UTF8.GetString(resultBytes)).HashString; _distributedCache.Set(token, resultBytes, new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(_options.AbsoluteExpirationMinutes) }); return(token); }
/// <summary> /// Serialize the given data to an string. /// </summary> public string Serialize(object data) { var result = JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = false, IgnoreNullValues = true }); var token = _captchaProtectionProvider.Hash(result).HashString; _memoryCache.Set(token, result, new MemoryCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(_options.AbsoluteExpirationMinutes), Size = 1 // the size limit is the count of entries }); return(token); }
/// <summary> /// The cookie value's bindings. /// </summary> public static string GetSalt(this HttpContext context, ICaptchaCryptoProvider captchaProtectionProvider) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (captchaProtectionProvider == null) { throw new ArgumentNullException(nameof(captchaProtectionProvider)); } var userAgent = (string)context.Request.Headers[HeaderNames.UserAgent]; var issueDate = DateTime.Now.ToString("yyyy_MM_dd", CultureInfo.InvariantCulture); var name = typeof(ProvidersExtensions).Name; var salt = $"::{issueDate}::{name}::{userAgent}"; return(captchaProtectionProvider.Hash(salt).HashString); }