0
0

User.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using Microsoft.AspNetCore.Http;
  2. namespace Admin.Core.Common.Auth
  3. {
  4. /// <summary>
  5. /// 用户信息
  6. /// </summary>
  7. public class User : IUser
  8. {
  9. private readonly IHttpContextAccessor _accessor;
  10. public User(IHttpContextAccessor accessor)
  11. {
  12. _accessor = accessor;
  13. }
  14. /// <summary>
  15. /// 用户Id
  16. /// </summary>
  17. public long Id
  18. {
  19. get
  20. {
  21. var id = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserId);
  22. if (id != null && id.Value.NotNull())
  23. {
  24. return id.Value.ToLong();
  25. }
  26. return 0;
  27. }
  28. }
  29. /// <summary>
  30. /// 用户名
  31. /// </summary>
  32. public string Name
  33. {
  34. get
  35. {
  36. var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserName);
  37. if (name != null && name.Value.NotNull())
  38. {
  39. return name.Value;
  40. }
  41. return "";
  42. }
  43. }
  44. /// <summary>
  45. /// 姓名
  46. /// </summary>
  47. public string RealName
  48. {
  49. get
  50. {
  51. var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserRealName);
  52. if (name != null && name.Value.NotNull())
  53. {
  54. return name.Value;
  55. }
  56. return "";
  57. }
  58. }
  59. /// <summary>
  60. /// 登录日志Id
  61. /// </summary>
  62. public long LoginLogId
  63. {
  64. get
  65. {
  66. var id = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserLoginLogId);
  67. if (id != null && id.Value.NotNull())
  68. {
  69. return id.Value.ToLong();
  70. }
  71. return 0;
  72. }
  73. }
  74. /// <summary>
  75. /// 用户IP
  76. /// </summary>
  77. public string IP
  78. {
  79. get
  80. {
  81. if (_accessor?.HttpContext?.Connection == null)
  82. return "";
  83. return _accessor.HttpContext.Connection.RemoteIpAddress.ToString();
  84. }
  85. }
  86. /// <summary>
  87. /// 用户IPv4
  88. /// </summary>
  89. public string IPv4
  90. {
  91. get
  92. {
  93. if (_accessor?.HttpContext?.Connection == null)
  94. return "";
  95. return _accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
  96. }
  97. }
  98. /// <summary>
  99. /// 用户IPv6
  100. /// </summary>
  101. public string IPv6
  102. {
  103. get
  104. {
  105. if (_accessor?.HttpContext?.Connection == null)
  106. return "";
  107. return _accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv6().ToString();
  108. }
  109. }
  110. }
  111. /// <summary>
  112. /// Claim属性
  113. /// </summary>
  114. public static class ClaimAttributes
  115. {
  116. /// <summary>
  117. /// 用户Id
  118. /// </summary>
  119. public const string UserId = "id";
  120. /// <summary>
  121. /// 用户名
  122. /// </summary>
  123. public const string UserName = "na";
  124. /// <summary>
  125. /// 姓名
  126. /// </summary>
  127. public const string UserRealName = "rna";
  128. /// <summary>
  129. /// 登录日志Id
  130. /// </summary>
  131. public const string UserLoginLogId = "llid";
  132. }
  133. }