using Microsoft.AspNetCore.Http;
namespace Admin.Core.Common.Auth
{
///
/// 用户信息
///
public class User : IUser
{
private readonly IHttpContextAccessor _accessor;
public User(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
///
/// 用户Id
///
public long Id
{
get
{
var id = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserId);
if (id != null && id.Value.NotNull())
{
return id.Value.ToLong();
}
return 0;
}
}
///
/// 用户名
///
public string Name
{
get
{
var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserName);
if (name != null && name.Value.NotNull())
{
return name.Value;
}
return "";
}
}
///
/// 姓名
///
public string RealName
{
get
{
var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserRealName);
if (name != null && name.Value.NotNull())
{
return name.Value;
}
return "";
}
}
///
/// 登录日志Id
///
public long LoginLogId
{
get
{
var id = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserLoginLogId);
if (id != null && id.Value.NotNull())
{
return id.Value.ToLong();
}
return 0;
}
}
///
/// 用户IP
///
public string IP
{
get
{
if (_accessor?.HttpContext?.Connection == null)
return "";
return _accessor.HttpContext.Connection.RemoteIpAddress.ToString();
}
}
///
/// 用户IPv4
///
public string IPv4
{
get
{
if (_accessor?.HttpContext?.Connection == null)
return "";
return _accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
}
}
///
/// 用户IPv6
///
public string IPv6
{
get
{
if (_accessor?.HttpContext?.Connection == null)
return "";
return _accessor.HttpContext.Connection.RemoteIpAddress.MapToIPv6().ToString();
}
}
}
///
/// Claim属性
///
public static class ClaimAttributes
{
///
/// 用户Id
///
public const string UserId = "id";
///
/// 用户名
///
public const string UserName = "na";
///
/// 姓名
///
public const string UserRealName = "rna";
///
/// 登录日志Id
///
public const string UserLoginLogId = "llid";
}
}