UserToken.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. 
  2. using System;
  3. using System.Text;
  4. using System.Security.Claims;
  5. using System.IdentityModel.Tokens.Jwt;
  6. using Microsoft.IdentityModel.Tokens;
  7. using Admin.Core.Common.Configs;
  8. namespace Admin.Core.Common.Auth
  9. {
  10. public class UserToken : IUserToken
  11. {
  12. private readonly JwtConfig _jwtConfig;
  13. public UserToken(JwtConfig jwtConfig)
  14. {
  15. _jwtConfig = jwtConfig;
  16. }
  17. public string Build(Claim[] claims)
  18. {
  19. var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtConfig.SecurityKey));
  20. var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
  21. var token = new JwtSecurityToken(
  22. issuer: _jwtConfig.Issuer,
  23. audience: _jwtConfig.Audience,
  24. claims: claims,
  25. notBefore: DateTime.Now,
  26. expires: DateTime.Now.AddMinutes(_jwtConfig.Expires),
  27. signingCredentials: signingCredentials
  28. );
  29. return new JwtSecurityTokenHandler().WriteToken(token);
  30. }
  31. }
  32. }