/
renix
/
TravelGuide
Обзор
Документация
Войти
/
renix
/
TravelGuide
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
back/Services/RedisService.cs
46 строк
1 KB
artem777764
Красивые письма и почти хороший контролер ResetPassword
09 апр 2025, 13:00
09 апр 2025, 13:00
d846b0c
Код
Авторство
О чём код?
using System.Security.Cryptography; using StackExchange.Redis; namespace back.Services; public class RedisService { private readonly ConnectionMultiplexer _redis; private readonly IDatabase _database; public RedisService(IConfiguration configuration) { _redis = ConnectionMultiplexer.Connect(configuration["Redis:ConnectionString"]!); _database = _redis.GetDatabase(); } private string CreateUserKey(int userId) { return $"passwordreset:{userId}"; } private async Task SetStringAsync(string key, string value, TimeSpan? expiry = null) { await _database.StringSetAsync(key, value, expiry); } private async Task<string?> GetStringAsync(string key) { return await _database.StringGetAsync(key); } public async Task<string> CreateResetKey(int userId) { string key = CreateUserKey(userId); string value = RandomNumberGenerator.GetInt32(100000, 1000000).ToString(); TimeSpan expiry = TimeSpan.FromDays(1); await SetStringAsync(key, value, expiry); return value; } public async Task<bool> VerifyResetKey(int userId, string code) { string key = CreateUserKey(userId); string? resetCode = await GetStringAsync(key); return resetCode == code; } }