/
Kovalenko
/
TODO
Обзор
Документация
Войти
/
Kovalenko
/
TODO
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
TaskApi/Services/JwtTokenService.cs
49 строк
1 KB
Kovalenko1
Done
29 дек 2025, 11:50
29 дек 2025, 11:50
f453b3b
Код
Авторство
О чём код?
using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using TaskApi.Models; namespace TaskApi.Services; public class JwtOptions { public string Issuer { get; init; } = string.Empty; public string Audience { get; init; } = string.Empty; public string Key { get; init; } = string.Empty; public int TokenLifetimeMinutes { get; init; } = 120; } public class JwtTokenService { private readonly JwtOptions _options; public JwtTokenService(IOptions<JwtOptions> options) { _options = options.Value; } public string CreateToken(User user) { var claims = new[] { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Email, user.Email) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_options.Key)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: _options.Issuer, audience: _options.Audience, claims: claims, expires: DateTime.UtcNow.AddMinutes(_options.TokenLifetimeMinutes), signingCredentials: creds); return new JwtSecurityTokenHandler().WriteToken(token); } }