123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System.Collections.Generic;
- using System.Linq;
- using System.Security.Claims;
- using Microsoft.AspNetCore.Http;
- namespace Admin.Core.Common.Auth
- {
- /// <summary>
- /// 用户信息
- /// </summary>
- public class User : IUser
- {
- private readonly IHttpContextAccessor _accessor;
- public User(IHttpContextAccessor accessor)
- {
- _accessor = accessor;
- }
- /// <summary>
- /// 用户Id
- /// </summary>
- public long Id
- {
- get
- {
- var id = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserId);
- if (id != null && id.Value.NotNull())
- {
- return id.Value.ToLong();
- }
- return 0;
- }
- }
- /// <summary>
- /// 用户名
- /// </summary>
- public string Name
- {
- get
- {
- var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserName);
- if (name != null && name.Value.NotNull())
- {
- return name.Value;
- }
- return "";
- }
- }
- /// <summary>
- /// 用户IP
- /// </summary>
- public string IP
- {
- get
- {
- if (_accessor?.HttpContext?.Connection == null)
- return "";
- return _accessor.HttpContext.Connection.RemoteIpAddress.ToString();
- }
- }
- /// <summary>
- /// 用户IPv4
- /// </summary>
- public string IPv4
- {
- get
- {
- if (_accessor?.HttpContext?.Connection == null)
- return "";
- return _accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
- }
- }
- /// <summary>
- /// 用户IPv6
- /// </summary>
- public string IPv6
- {
- get
- {
- if (_accessor?.HttpContext?.Connection == null)
- return "";
- return _accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv6().ToString();
- }
- }
- public bool IsAuthenticated()
- {
- return _accessor.HttpContext.User.Identity.IsAuthenticated;
- }
- public IEnumerable<Claim> GetClaimsIdentity()
- {
- return _accessor.HttpContext.User.Claims;
- }
- public List<string> GetClaimValueByType(string ClaimType)
- {
- return (from item in GetClaimsIdentity()
- where item.Type == ClaimType
- select item.Value).ToList();
- }
- }
- /// <summary>
- /// Claim属性
- /// </summary>
- public static class ClaimAttributes
- {
- /// <summary>
- /// 用户Id
- /// </summary>
- public const string UserId = "id";
- /// <summary>
- /// 用户名
- /// </summary>
- public const string UserName = "na";
- }
- }
|