コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
            }
        }