/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 202403/02 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using CoreCms.Net.Utility.Extensions; using Microsoft.AspNetCore.Http; namespace CoreCms.Net.Auth.HttpContextUser { public class AspNetUser : IHttpContextUser { private readonly IHttpContextAccessor _accessor; public AspNetUser(IHttpContextAccessor accessor) { _accessor = accessor; } public string Name => _accessor.HttpContext.User.Identity.Name; public int ID => GetClaimValueByType("jti").FirstOrDefault().ObjectToInt(); public bool IsAuthenticated() { return _accessor.HttpContext.User.Identity.IsAuthenticated; } public string GetToken() { return _accessor.HttpContext.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", ""); } public List GetUserInfoFromToken(string ClaimType) { var jwtHandler = new JwtSecurityTokenHandler(); if (!string.IsNullOrEmpty(GetToken())) { JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(GetToken()); return (from item in jwtToken.Claims where item.Type == ClaimType select item.Value).ToList(); } else { return new List() { }; } } public IEnumerable GetClaimsIdentity() { return _accessor.HttpContext.User.Claims; } public List GetClaimValueByType(string ClaimType) { return (from item in GetClaimsIdentity() where item.Type == ClaimType select item.Value).ToList(); } } }