/// <summary>获取认证的用户信息</summary> public override IAccountInfo GetAuthUser() { string accountIdentity = this.GetIdentityValue(); // 获取帐号信息 IAccountInfo account = this.GetSessionAccount(accountIdentity); if (account == null) { // 如果当前帐号为空, 则连接到验证服务器验证用户的会话信息. string loginName = GetAccountLoginName(); // 没有登录信息则返回空 if (string.IsNullOrEmpty(loginName)) { return(null); } account = MembershipManagement.Instance.AccountService.FindOneByLoginName(loginName); if (account != null && account.LoginName == loginName) { accountIdentity = string.Format("{0}-{1}", account.Id, DigitalNumberContext.Generate("Key_Session")); HttpAuthenticationCookieSetter.SetUserCookies(accountIdentity); // 记录登录时间 if (account.LoginDate.AddHours(8) < DateTime.Now) { MembershipManagement.Instance.AccountService.SetIPAndLoginDate(account.Id, IPQueryContext.GetClientIP(), DateTime.Now); } } } if (account == null) { return(null); } // 写入临时存储 if (!this.cacheStorage.ContainsKey(accountIdentity)) { lock (this.cacheSyncRoot) { if (!this.cacheStorage.ContainsKey(accountIdentity)) { this.AddSession(accountIdentity, account); } } } return(account); }
/// <summary></summary> public override string GetIdentityValue() { string accountIdentityProperty = MembershipConfigurationView.Instance.AccountIdentityCookieToken; if (HttpContext.Current.Request.Cookies[accountIdentityProperty] == null || string.IsNullOrEmpty(HttpContext.Current.Request.Cookies[accountIdentityProperty].Value)) { if (HttpContext.Current.User.Identity.IsAuthenticated) { string longinName = HttpContext.Current.User.Identity.Name; int index = longinName.IndexOf("\\") + 1; longinName = longinName.Substring(index, longinName.Length - index); IAccountInfo account = MembershipManagement.Instance.AccountService.FindOneByLoginName(longinName); if (account == null) { return(string.Empty); } else { string accountIdentity = string.Format("{0}-{1}", account.Id, DigitalNumberContext.Generate("Key_Session")); SessionContext.Instance.Write(this.strategy, accountIdentity, account); HttpAuthenticationCookieSetter.SetUserCookies(accountIdentity); // 记录登录时间 if (account.LoginDate.AddHours(8) < DateTime.Now) { MembershipManagement.Instance.AccountService.SetIPAndLoginDate(account.Id, IPQueryContext.GetClientIP(), DateTime.Now); } return(accountIdentity); } } else { return(string.Empty); } } else { return(HttpContext.Current.Request.Cookies[accountIdentityProperty].Value); } }
/// <summary>获取认证的用户信息</summary> public override IAccountInfo GetAuthUser() { string accountIdentity = this.GetIdentityValue(); IAccountInfo account = SessionContext.Instance.GetAuthAccount <AccountInfo>(strategy, accountIdentity); if (account == null && HttpContext.Current.User.Identity.IsAuthenticated) { string longinName = HttpContext.Current.User.Identity.Name; int index = longinName.IndexOf("\\") + 1; longinName = longinName.Substring(index, longinName.Length - index); account = MembershipManagement.Instance.AccountService.FindOneByLoginName(longinName); if (account == null) { return(null); } else { SessionContext.Instance.Write(this.strategy, accountIdentity, account); HttpAuthenticationCookieSetter.SetUserCookies(accountIdentity); // 记录登录时间 if (account.LoginDate.AddHours(8) < DateTime.Now) { MembershipManagement.Instance.AccountService.SetIPAndLoginDate(account.Id, IPQueryContext.GetClientIP(), DateTime.Now); } } } if (account != null && HttpContext.Current.User.Identity.IsAuthenticated) { HttpAuthenticationCookieSetter.SetUserCookies(accountIdentity); return(account); } else { return(null); } }