using System;
using System.Security.Cryptography;
using System.Text;
using Microsoft.AspNetCore.Http;
namespace Dpz.Core.Infrastructure;
/// <summary>
/// 邮箱验证缓存 Key 生成工具
/// </summary>
public static class EmailVerifyCacheKeyTools
{
/// <summary>
/// 邮箱验证通过缓存 key 前缀
/// </summary>
private const string VerifyPassedCachePrefix = "EmailVerifyPassed:";
/// <summary>
/// 构建邮箱验证通过缓存 key
/// </summary>
/// <param name="request"></param>
/// <param name="email"></param>
/// <param name="cachePrefix"></param>
/// <returns></returns>
public static string BuildEmailVerifyPassedCacheKey(
this HttpRequest request,
string email,
string cachePrefix = VerifyPassedCachePrefix
)
{
var normalizedEmail = email.Trim().ToLowerInvariant();
var ipAddress = request.GetIpAddress();
var userAgent = request.Headers.UserAgent.ToString();
var raw = $"{normalizedEmail}:{ipAddress}:{userAgent}";
var fingerprint = Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(raw)));
return $"{cachePrefix}{fingerprint}";
}
}
评论加载中...