public SysIdentity GetCurrentSysIdentity() { SysIdentity sysIdentity = WebHelper.GetSysIdentity(HttpContext.Current.User); string gwpasscode = HttpContext.Current.Request[GW_PASSCODE]; if (sysIdentity == null && !String.IsNullOrEmpty(gwpasscode)) { if (this.GetUserSessionState(gwpasscode) == UserSessionState.Valid) { UserInfo ui = GetUserInfo(gwpasscode); SetAuthenticationTicket(gwpasscode, ui.LoginName); sysIdentity = new SysIdentity(gwpasscode); sysIdentity.UserInfo = ui; SysPrincipal sp = new SysPrincipal(sysIdentity); HttpContext.Current.User = sp; } } if (sysIdentity != null && !String.IsNullOrEmpty(sysIdentity.UserSID)) { if (sysIdentity.UserInfo == null) { sysIdentity.UserInfo = GetUserInfo(sysIdentity.UserSID); } } return(sysIdentity); }
/// <summary> /// 获取登陆标识信息 /// </summary> public static void AcquireRequestIdentity() { IPrincipal user = HttpContext.Current.User; string requestPath = HttpContext.Current.Request.FilePath.ToLower(); // 只有aspx页面才需要验证 if (!(requestPath.EndsWith("aspx") || requestPath.EndsWith("ashx"))) { return; } // 用户认证 if (user != null && user.Identity.IsAuthenticated && user.Identity.AuthenticationType == "Forms") { FormsIdentity formIdentity = user.Identity as FormsIdentity; string sid = formIdentity.Ticket.UserData; if (!String.IsNullOrEmpty(sid)) { SysIdentity si = new SysIdentity(sid); SysPrincipal sp = new SysPrincipal(si); HttpContext.Current.User = sp; } } }
/// <summary> /// 设置认证令牌 /// </summary> /// <param name="sessionId"></param> /// <param name="loginName"></param> private void SetAuthenticationTicket(string sessionId, string loginName) { SysIdentity si = null; SysPrincipal sp = null; // 判断返回的是否用户状态 HttpCookie authCookie = FormsAuthentication.GetAuthCookie(loginName, true); authCookie.Expires.AddYears(99); // 永不过期 FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket( ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, sessionId); authCookie.Value = FormsAuthentication.Encrypt(newTicket); HttpContext.Current.Response.Cookies.Add(authCookie); }