Это стандартный метод JWT для создания токена. Вот мой код и вывод журнала:
Код: Выделить всё
public class UserRepository : IUserRepository
{
private readonly AppDbContext _db;
private string secretkey;
public UserRepository(AppDbContext db, IConfiguration config)
{
_db = db;
secretkey = config.GetValue("ApiSettings", "Secret");
}
public async Task Login(LoginRequestDTO loginRequestDto)
{
var user = await _db.Users.FirstOrDefaultAsync(x => x.UserName.ToLower() == loginRequestDto.UserName.ToLower());
if (user == null)
{
return new LoginResponseDTO()
{
Token = "",
User = null
};
}
// if user was found generate then the JWT Token
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(secretkey);
var tokenDescriptor = new SecurityTokenDescriptor()
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.Role, user.Role)
}),
Expires = DateTime.UtcNow.AddDays(5),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
LoginResponseDTO loginResponse = new()
{
Token = tokenHandler.WriteToken(token),
User = user,
};
return loginResponse;
}
}

Я пробовал изменить срок действия и претензии, но, похоже, ничего не помогает.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -api-login
Мобильная версия