/*********************************************************************** * Project: CoreCms * ProjectName: 核心内容管理系统 * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com * CreateTime: 2021/1/31 21:45:10 * 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(); } } }