HttpJwtAnalysis.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using Microsoft.AspNetCore.Http;
  3. using System.IdentityModel.Tokens.Jwt;
  4. using System.Linq;
  5. using TEAMModelOS.Models;
  6. using TEAMModelOS.SDK.Extension;
  7. namespace TEAMModelBI.Tool.Extension
  8. {
  9. public static class HttpJwtAnalysis
  10. {
  11. /// <summary>
  12. /// 通过jwt封装的字串解析,id和名称
  13. /// </summary>
  14. /// <param name="auth"></param>
  15. /// <param name="option"></param>
  16. /// <returns></returns>
  17. public static (string id, string name) JwtXAuth(string auth, Option option)
  18. {
  19. string id = null, name = null;
  20. if (!string.IsNullOrWhiteSpace(auth) && JwtAuthExtension.ValidateApiToken(auth, option.JwtSecretKey))
  21. {
  22. var jwt = new JwtSecurityTokenHandler().ReadJwtToken(auth);
  23. id = jwt.Payload.Sub;
  24. name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
  25. }
  26. return (id, name);
  27. }
  28. /// <summary>
  29. /// 通过jwt封装的字串解析
  30. /// </summary>
  31. /// <param name="httpContext"></param>
  32. /// <param name="key"></param>
  33. /// <returns></returns>
  34. public static (string id, string name, string pic, string did, string dname, string dpic) JwtXAuthBI(string auth, Option option)
  35. {
  36. object id = null, name = null, pic = null, did = null, dname = null, dpic = null;
  37. if (!string.IsNullOrWhiteSpace(auth) && JwtAuthExtension.ValidateApiToken(auth, option.JwtSecretKey))
  38. {
  39. var jwt = new JwtSecurityTokenHandler().ReadJwtToken(auth);
  40. id = jwt.Payload.Sub;
  41. name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
  42. pic = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("picture"))?.Value;
  43. did = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddsub"))?.Value;
  44. dname = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddname"))?.Value;
  45. dpic = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddpicture"))?.Value;
  46. }
  47. return (id?.ToString(), name?.ToString(), pic?.ToString(), did?.ToString(), dname?.ToString(), dpic?.ToString());
  48. }
  49. }
  50. }