1
0

UserToken.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. using Admin.Core.Common.Attributes;
  9. namespace Admin.Core.Common.Auth
  10. {
  11. [SingleInstance]
  12. public class UserToken : IUserToken
  13. {
  14. private readonly JwtConfig _jwtConfig;
  15. public UserToken(JwtConfig jwtConfig)
  16. {
  17. _jwtConfig = jwtConfig;
  18. }
  19. public string Build(Claim[] claims)
  20. {
  21. var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtConfig.SecurityKey));
  22. var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
  23. var token = new JwtSecurityToken(
  24. issuer: _jwtConfig.Issuer,
  25. audience: _jwtConfig.Audience,
  26. claims: claims,
  27. notBefore: DateTime.Now,
  28. expires: DateTime.Now.AddMinutes(_jwtConfig.Expires),
  29. signingCredentials: signingCredentials
  30. );
  31. return new JwtSecurityTokenHandler().WriteToken(token);
  32. }
  33. }
  34. }