JwtUser.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Bowin.Common.Cache;
  2. using Bowin.Common.JSON;
  3. using Bowin.Common.Utility;
  4. using Microsoft.AspNetCore.Http;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Security.Claims;
  8. using System.Text;
  9. namespace Bowin.Common.ServiceToken
  10. {
  11. public class JwtUser<T>
  12. {
  13. public static T Current
  14. {
  15. get
  16. {
  17. var contextUser = HttpHelper.Accessor.HttpContext.User;
  18. if (contextUser == null)
  19. {
  20. return default(T);
  21. }
  22. var userCliam = contextUser.FindFirst(ClaimTypes.Name); //contextUser.FindFirst(ClaimTypes.UserData);
  23. if (userCliam == null)
  24. {
  25. return default(T);
  26. }
  27. var userJson = (string)CacheHelper.Get("uinfo_" + userCliam.Value);
  28. if (string.IsNullOrEmpty(userJson))
  29. {
  30. var userInfo = JwtHelper.GetRefreshUserFunc.DynamicInvoke(new Guid(userCliam.Value));
  31. if (userInfo == null)
  32. {
  33. return default(T);
  34. }
  35. userJson = userInfo.ToJson();
  36. CacheHelper.Add("uinfo_" + userCliam.Value, userJson);
  37. }
  38. return userJson.ToObject<T>();
  39. }
  40. }
  41. }
  42. }