From f43b7df8400f4fcffc9f19dca0888d61e2b33d5f Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 12 三月 2025 18:41:52 +0800 Subject: [PATCH] WMS系统添加PDA权限,PDA程序 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 129 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..1bf7f75 --- /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,129 @@ +锘縰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.Authorization; +using WIDESEA_Core.Caches; +using WIDESEA_Core.Const; +using WIDESEA_Core.DB; +using WIDESEA_Core.Helper; +using WIDESEA_Core.Seed; +using ICacheService = WIDESEA_Core.Caches.ICacheService; + +namespace WIDESEA_Core.HttpContextUser +{ + public class AspNetUser : IUser + { + private readonly IHttpContextAccessor _accessor; + private readonly ICacheService _cacheService; + //private readonly ILogger<AspNetUser> _logger; + + public AspNetUser(IHttpContextAccessor accessor, ICacheService cacheService) + { + _accessor = accessor; + _cacheService = cacheService; + /*_logger = logger;*/ + } + + public string UserName => GetUserInfoFromToken(ClaimTypes.Name).FirstOrDefault() ?? ""; + + public int UserId => GetClaimValueByType(JwtRegisteredClaimNames.Jti) == null ? 0 : GetClaimValueByType(JwtRegisteredClaimNames.Jti).FirstOrDefault()?.ObjToInt() ?? 0; + + public long TenantId => GetUserInfoFromToken(nameof(TenantId)).FirstOrDefault()?.ObjToLong() ?? -1; + + public int RoleId => GetUserInfoFromToken(ClaimTypes.Role).FirstOrDefault()?.ObjToInt() ?? 0; + + public string Token => GetToken(); + + public int MenuType => (_accessor.HttpContext?.Request.Headers.ContainsKey("uniapp") ?? false) ? 1 : 0; + + public bool IsAuthenticated() + { + return _accessor.HttpContext?.User?.Identity?.IsAuthenticated ?? false; + } + + public string GetToken() + { + string token = _cacheService.Get(UserId.ToString()); + if (!string.IsNullOrEmpty(token)) { return token; } + return string.Empty; + //return _accessor.HttpContext?.Request?.Headers["Authorization"].ObjToString().Replace("Bearer ", "") ?? ""; + } + + public void UpdateToke(string token) + { + _cacheService.AddOrUpdate(UserId.ToString(), token); + } + + public bool IsSuperAdmin => IsRoleIdSuperAdmin(RoleId); + + 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 IEnumerable<Claim> GetClaimsIdentity() + { + if (_accessor.HttpContext != null) + { + 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; + } + return ArraySegment<Claim>.Empty; + } + + 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 string UserName { get; set; } + + public int UserId { get; set; } + + public string UserTrueName { get; set; } + + public string HeadImageUrl { get; set; } + } +} -- Gitblit v1.9.3