TokenService.cs:
public class TokenService : ITokenService
{
private readonly IConfiguration _configuration;
private readonly SymmetricSecurityKey _key;
public TokenService(IConfiguration configuration)
{
_configuration = configuration;
_key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:SigningKey"]));
}
public string CreateToken(User user)
{
var claims = new List
{
new Claim(JwtRegisteredClaimNames.Email, user.Email),
new Claim(JwtRegisteredClaimNames.GivenName, user.UserName)
};
var creds = new SigningCredentials(_key, SecurityAlgorithms.HmacSha256);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = creds,
Issuer = _configuration["JWT:Issuer"],
Audience = _configuration["JWT:Audience"]
};
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
}
}
Я получаю токен обратно после входа в систему, но при попытке сделать запрос от Postman получаю сообщение 401 Unauthorized. [code]Program.cs: public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen();
public TokenService(IConfiguration configuration) { _configuration = configuration; _key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:SigningKey"])); }
public string CreateToken(User user) { var claims = new List { new Claim(JwtRegisteredClaimNames.Email, user.Email), new Claim(JwtRegisteredClaimNames.GivenName, user.UserName) };
var creds = new SigningCredentials(_key, SecurityAlgorithms.HmacSha256);
var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds, Issuer = _configuration["JWT:Issuer"], Audience = _configuration["JWT:Audience"] };
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token); } } [/code] Я все перепробовал... ничего не помогло.