using APT.Infrastructure.Core; using APT.Utility; using APT.LG.WebApi.Models; using Microsoft.IdentityModel.Tokens; using System; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using System.Threading; namespace APT.LG.WebApi.Providers { /// /// WebApi Session实现类 /// public class AspNetSessionProvider : ISession, ISessionProvider { private readonly SessionData sessionData; public AspNetSessionProvider() { try { var token = Infrastructure.Core.HttpContext.Current.Request.Headers["Authorization"].ToString().Replace("Bearer ", string.Empty); var userId= Infrastructure.Core.HttpContext.Current.Request.Headers["userid"].ToString(); if (!string.IsNullOrEmpty(token)&& !string.IsNullOrEmpty(userId)&& userId!="null") { JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); //var user = handler.ReadJwtToken(token); //var info = handler.ReadToken(token); //var UserClaim = user.Payload["UserData"] == null ? "{}" : user.Payload["UserData"].ToString(); sessionData = new SessionData { UserId = new Guid(userId) }; } } 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; } } #endregion } }