using APT.Infrastructure.Core; using APT.Utility; using Microsoft.IdentityModel.Tokens; using System; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using System.Threading; namespace APT.Utility { /// /// WebApi Session实现类 /// public class AspNetSessionProvider : ISession, ISessionProvider { private readonly SessionData sessionData; public AspNetSessionProvider() { try { var token = Infrastructure.Api.HttpContext.Current.Request.Headers["Authorization"].ToString().Replace("Bearer ", string.Empty); var userId = Infrastructure.Api.HttpContext.Current.Request.Headers["userid"].ToString(); var userName = Infrastructure.Api.HttpContext.Current.Request.Headers["username"].ToString(); var orgIdStr = Infrastructure.Api.HttpContext.Current.Request.Headers["orgId"].ToString(); var departmentId = Infrastructure.Api.HttpContext.Current.Request.Headers["departmentId"].ToString(); var mineType = Infrastructure.Api.HttpContext.Current.Request.Headers["minetype"].ToString(); var dataRule = Infrastructure.Api.HttpContext.Current.Request.Headers["DataRule"].ToString()?.Split(new char[] { ','}).ToArray(); if (mineType == "null") { mineType = ""; } if (!string.IsNullOrEmpty(token) && !string.IsNullOrEmpty(userId) && userId != "null") { Guid? orgId = null; if (!string.IsNullOrEmpty(orgIdStr)) orgId = new Guid(orgIdStr); JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); sessionData = new SessionData { UserId = new Guid(userId), UserName = userName, DepartmentId = (string.IsNullOrEmpty(departmentId) || departmentId == "null") ? Guid.Empty : new Guid(departmentId), OrgId = orgId, MineType = mineType, DataRule = dataRule, }; } } catch { } } #region ISessionProvider 成员 /// /// 获取会话对象 /// /// public ISession GetSession() { return this; } #endregion #region ISession 成员 /// /// 用户ID /// public string UserId { get { return sessionData == null || sessionData.UserId == null ? null : sessionData.UserId.ToString(); } set { } } /// /// 用户ID /// public Guid? UserID { get { if (string.IsNullOrEmpty(this.UserId)) return null; return Guid.Parse(this.UserId); } set { } } /// /// 用户编号 /// public string UserCode { get { return sessionData == null ? null : sessionData.UserCode; } set { } } /// /// 用户名称 /// public string UserName { get { return sessionData == null ? null : sessionData.UserName; } set { } } /// /// 部门ID /// public string DepartmentId { get { return sessionData == null || sessionData.DepartmentId == null ? null : sessionData.DepartmentId.ToString(); } set { } } /// /// 部门ID /// public Guid? DepartmentID { get { if (string.IsNullOrEmpty(this.DepartmentId)) return null; return Guid.Parse(this.DepartmentId); } set { } } public Guid? OrgId { get { return sessionData == null ? null : sessionData.OrgId; } set { } } public Guid? RootOrgId { get { return sessionData == null ? null : sessionData.RootOrgId; } set { if (sessionData != null) sessionData.RootOrgId = value; } } /// /// 生产单元类型 wywAdd /// public string MineType { get { return sessionData == null ? null : sessionData.MineType; } set { if (sessionData != null) sessionData.MineType = value; } } /// /// 生产单元类型 wywAdd /// public string[] DataRule { get { return sessionData == null ? null : sessionData.DataRule; } set { if (sessionData != null) sessionData.DataRule = value; } } #endregion } }