11public class SignInManager
16 private readonly
string _jwtKey;
17 private readonly
string _jwtIssuer;
18 private readonly
string _jwtAudience;
26 #region Public Methods
28 public SignInManager(
UserManager userManager,
string jwtKey,
string jwtIssuer,
string jwtAudience)
30 _userManager = userManager;
32 _jwtIssuer = jwtIssuer;
33 _jwtAudience = jwtAudience;
36 public async Task<string?> AuthenticateAsync(
string username,
string password)
47 JwtSecurityTokenHandler tokenHandler =
new();
48 byte[] key = Encoding.UTF8.GetBytes(_jwtKey);
51 new Claim(JwtRegisteredClaimNames.Sub, user.
Id.ToString()),
52 new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName ??
string.Empty),
53 new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
55 SecurityTokenDescriptor tokenDescriptor =
new()
57 Subject =
new ClaimsIdentity(claims),
58 Expires = DateTime.UtcNow.AddHours(1),
60 Audience = _jwtAudience,
61 SigningCredentials =
new SigningCredentials(
new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
63 SecurityToken token = tokenHandler.CreateToken(tokenDescriptor);
64 return tokenHandler.WriteToken(token);
73 #region CanDoXXX Commands
77 #region OnXXX Commands