DelphiniumVC

Форк
0
/
TokenService.cs 
42 строки · 1.3 Кб
1
using System.IdentityModel.Tokens.Jwt;
2
using System.Security.Claims;
3
using System.Text;
4
using Domain;
5
using Microsoft.IdentityModel.Tokens;
6

7
namespace API.Services
8
{
9
    public class TokenService
10
    {
11
        private readonly IConfiguration _config;
12
        public TokenService(IConfiguration config)
13
        {
14
            _config = config;
15
        }
16
        public string CreateToken(AppUser user)
17
        {
18
            var claims = new List<Claim>
19
            {
20
                new Claim(ClaimTypes.Name, user.UserName),
21
                new Claim(ClaimTypes.NameIdentifier, user.Id),
22
                new Claim(ClaimTypes.Email, user.Email),
23
            };
24

25
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["TokenKey"]));
26
            var creds = new SigningCredentials(key, SecurityAlgorithms.Aes128CbcHmacSha256);
27

28
            var tokenDescriptor = new SecurityTokenDescriptor
29
            {
30
                Subject = new ClaimsIdentity(claims),
31
                Expires = DateTime.UtcNow.AddDays(7),
32
                SigningCredentials = creds
33
            };
34

35
            var tokenHandler = new JwtSecurityTokenHandler();
36

37
            var token = tokenHandler.CreateToken(tokenDescriptor);
38

39
            return tokenHandler.WriteToken(token);
40
        }   
41
    }
42
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.