namespace Application.Domain; public static class UserKeyTool { public static async Task GetThickenData(string userId, params string[] data) { string key = await GetUserKey(userId); return GetThickenDataByUserKey(key, data); } public static string GetThickenDataByUserKey(string key, params string[] data) { string _data = string.Join("", data); return EncryptAssist.Md5Encryption($"{key}_{_data}").ToLower(); } public static async Task CheckUserThickenData(string userId, string sign, params string[] data) { string key = await GetUserKey(userId); string _sign = GetThickenDataByUserKey(key, data); await ResetUserKey(userId); return sign.ToLower() == _sign; } public static async Task GetUserKey(string userId) { var key = string.Format(UserCache.BaseCacheKey, "UserKey"); var redis = App.GetService(); if (await redis.HExistsHashAsync(key, userId)) { return await redis.GetHashAsync(key, userId); } string data = StringAssist.RandomString(12); await redis.AddHashAsync(key, userId, data); return data; } private static async Task ResetUserKey(string userId) { string data = StringAssist.RandomString(12); var key = string.Format(UserCache.BaseCacheKey, "UserKey"); var redis = App.GetService(); await redis.AddHashAsync(key, userId, data); } }