From a38b50675f2cf8e813bd337ca2f9d9456cc421d3 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 17 十月 2024 09:50:14 +0800 Subject: [PATCH] WCS --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs | 195 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 195 insertions(+), 0 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs" new file mode 100644 index 0000000..36743dd --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs" @@ -0,0 +1,195 @@ +锘縰sing Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; +using System.Linq; +using System.Security.Claims; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core.Const; +using WIDESEA_Core.DB; +using WIDESEA_Core.Helper; +using WIDESEA_Core.Seed; + +namespace WIDESEA_Core.HttpContextUser +{ + public class AspNetUser : IUser + { + private readonly IHttpContextAccessor _accessor; + //private readonly ILogger<AspNetUser> _logger; + + public AspNetUser(IHttpContextAccessor accessor/*, ILogger<AspNetUser> logger*/) + { + _accessor = accessor; + /*_logger = logger;*/ + } + + public string UserName => UserInfo.UserName; + + //private string GetName() + //{ + // if (IsAuthenticated() && _accessor.HttpContext.User.Identity.Name.IsNotEmptyOrNull()) + // { + // return _accessor.HttpContext.User.Identity.Name; + // } + // else + // { + // if (!string.IsNullOrEmpty(GetToken())) + // { + // var getNameType = /*Permissions.IsUseIds4 ? */"name" /*: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"*/; + // return GetUserInfoFromToken(getNameType).FirstOrDefault().ObjToString(); + // } + // } + + // return ""; + //} + + public int UserId => GetClaimValueByType("jti").FirstOrDefault().ObjToInt(); + public long TenantId => UserInfo.TenantId; + + public int RoleId => UserInfo.RoleId; + + public string Token => "throw new NotImplementedException()"; + + public int SystemType => UserInfo.SystemType; + + public bool IsAuthenticated() + { + return _accessor.HttpContext.User.Identity.IsAuthenticated; + } + + + public string GetToken() + { + return _accessor.HttpContext?.Request?.Headers["Authorization"].ObjToString().Replace("Bearer ", ""); + } + + private UserInfo _userInfo { get; set; } + private UserInfo UserInfo + { + get + { + if (_userInfo != null) + return _userInfo; + + SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig + { + ConfigId = MainDb.CurrentDbConnId, + DbType = MainDb.DbType, + //ConnectionString = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB), + ConnectionString = AppSettings.app(MainDb.ConnectionString), + IsAutoCloseConnection = true + }); + + dynamic userInfo = sqlSugarClient.Queryable(MainDb.UserTableName, "x").Where(MainDb.UserId, "=", UserId).Select(GetUserInfoSelectModels()).First(); + if (userInfo != null) + { + _userInfo = new UserInfo() + { + RoleId = userInfo.Role_Id, + TenantId = userInfo.TenantId, + SystemType = userInfo.SystemType, + UserName = userInfo.UserName, + }; + return _userInfo; + } + + return new UserInfo(); + } + } + + public bool IsSuperAdmin => IsRoleIdSuperAdmin(RoleId); + + public List<Permissions> Permissions => throw new NotImplementedException(); + + public UserInfo GetCurrentUserInfo() + { + return UserInfo; + } + + public List<SelectModel> GetUserInfoSelectModels() + { + List<SelectModel> selectModels = new List<SelectModel>() + { + new() { + FieldName = MainDb.TenantId + }, + new() { + FieldName = MainDb.RoleId, + }, + new() { + FieldName = MainDb.SystemType + }, + new() { + FieldName = MainDb.UserName + } + }; + return selectModels; + } + + public List<string> GetUserInfoFromToken(string ClaimType) + { + var jwtHandler = new JwtSecurityTokenHandler(); + var token = ""; + + token = GetToken(); + // token鏍¢獙 + if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token)) + { + JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(token); + + return (from item in jwtToken.Claims + where item.Type == ClaimType + select item.Value).ToList(); + } + + return new List<string>() { }; + } + + //public MessageModel<string> MessageModel { get; set; } + + public IEnumerable<Claim> GetClaimsIdentity() + { + var claims = _accessor.HttpContext.User.Claims.ToList(); + var headers = _accessor.HttpContext.Request.Headers; + foreach (var header in headers) + { + claims.Add(new Claim(header.Key, header.Value)); + } + + return claims; + } + + public List<string> GetClaimValueByType(string ClaimType) + { + return (from item in GetClaimsIdentity() + where item.Type == ClaimType + select item.Value).ToList(); + } + + public bool IsRoleIdSuperAdmin(int roleId) + { + return roleId == 1; + } + } + + public class UserInfo + { + public long TenantId { get; set; } + + public int RoleId { get; set; } + + public int SystemType { get; set; } + + public string UserName { get; set; } + + public int UserId { get; set; } + + public string UserTrueName { get; set; } + + public string HeadImageUrl { get; set; } + } +} -- Gitblit v1.9.3