using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Wood.Util.JwtAuthorization { public static class HttpContextExtension { public static JwtUserInfo? UserInfo(this IHttpContextAccessor httpContextAccessor) { if (httpContextAccessor?.HttpContext?.User != null) { return httpContextAccessor.HttpContext.UserInfo(); } return null; } public static JwtUserInfo? UserInfo(this HttpContext httpContext) { if (httpContext?.User != null) { if (httpContext.User.Claims.Any()) { var claims = httpContext.User.Claims; JwtUserInfo info = new JwtUserInfo(); info.RealName = claims.First(it => it.Type == nameof(info.RealName)).Value; info.UserName = claims.First(it => it.Type == nameof(info.UserName)).Value; info.UserId = claims.First(it => it.Type == nameof(info.UserId)).Value.ToLong(); info.AccountType = claims.First(it => it.Type == nameof(info.AccountType)).Value.ToInt(); info.NickName = claims.First(it => it.Type == nameof(info.NickName)).Value; info.OrgId = claims.First(it => it.Type == nameof(info.OrgId)).Value.ToLong(); info.TenantId = claims.First(it => it.Type == nameof(info.TenantId)).Value.ToLong(); return info; } } return null; } public static JwtUserInfo? UserInfo(this ControllerBase controllerBase) { if (controllerBase?.HttpContext != null) { return controllerBase?.HttpContext.UserInfo(); } return null; } } }