对比新文件 |
| | |
| | | 锘縰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; } |
| | | } |
| | | } |