コード例 #1
0
ファイル: SignInControl.cs プロジェクト: wooln/AK47Source
        /// <summary>
        /// 进行初始化,加载TemplatePath页面,JavaScript脚本,进行用户SignInInfo状态判断
        /// </summary>
        /// <param name="e"></param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (this.DesignMode == false)
            {
                ISignInUserInfo signInUserInfo = OnInitSignInControl();

                if (signInUserInfo != null)
                {
                    ITicket ticket = Ticket.Create(SignInInfo.Create(signInUserInfo,
                                                                     (bool)PassportWebControlHelper.GetControlValue(this.TemplateControl, "dontSaveUserName", "Checked", false),
                                                                     (bool)PassportWebControlHelper.GetControlValue(this.TemplateControl, "autoSignIn", "Checked", false)),
                                                   HttpContext.Current.Request.QueryString["ip"]);

                    RedirectToAppUrl(ticket);
                }
                else
                {
                    if (TemplatePath != string.Empty)
                    {
                        this.templateControl = Page.LoadControl(TemplatePath);

                        this.Controls.Add(this.templateControl);

                        InitScript();
                        Initialize();
                    }
                }
            }
        }
コード例 #2
0
ファイル: SignInInfo.cs プロジェクト: wooln/AK47Source
        /// <summary>
        /// 根据ISignInUserInfo创建SignInInfo
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="bDontSaveUserID"></param>
        /// <param name="bAutoSignIn"></param>
        /// <returns></returns>
        public static ISignInInfo Create(ISignInUserInfo userInfo, bool bDontSaveUserID, bool bAutoSignIn)
        {
            userInfo.NullCheck("userInfo");

            XmlDocument signInXml = Common.GenerateSignInInfo(userInfo, bDontSaveUserID, bAutoSignIn);

            return(new SignInInfo(signInXml.InnerXml));
        }
コード例 #3
0
ファイル: SignInInfo.cs プロジェクト: jerryshi2007/AK47Source
        /// <summary>
        /// 根据ISignInUserInfo创建SignInInfo
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="bDontSaveUserID"></param>
        /// <param name="bAutoSignIn"></param>
        /// <returns></returns>
        public static ISignInInfo Create(ISignInUserInfo userInfo, bool bDontSaveUserID, bool bAutoSignIn)
        {
            userInfo.NullCheck("userInfo");

            XmlDocument signInXml = Common.GenerateSignInInfo(userInfo, bDontSaveUserID, bAutoSignIn);

            return new SignInInfo(signInXml.InnerXml);
        }
コード例 #4
0
ファイル: Common.cs プロジェクト: jerryshi2007/AK47Source
		/// <summary>
		/// 生成SignInInfo的Xml格式数据
		/// </summary>
		/// <param name="userInfo">用户登录信息</param>
		/// <param name="bDontSaveUserID">是否保存用户名</param>
		/// <param name="bAutoSignIn">是否自动登录</param>
		/// <returns>SignInfo的xml格式数据</returns>
		public static XmlDocument GenerateSignInInfo(ISignInUserInfo userInfo, bool bDontSaveUserID, bool bAutoSignIn)
		{
			string userID = ImpersonateSettings.GetConfig().Impersonation[userInfo.UserID];

			HttpContext context = HttpContext.Current;

			HttpRequest request = context.Request;

			XmlDocument xmlDoc = XmlHelper.CreateDomDocument("<SignInInfo/>");

			XmlHelper.AppendNode(xmlDoc.DocumentElement, "SSID", Guid.NewGuid().ToString());
			XmlHelper.AppendNode(xmlDoc.DocumentElement, "UID", userID);
			XmlHelper.AppendNode(xmlDoc.DocumentElement, "OUID", userInfo.OriginalUserID);
			XmlHelper.AppendNode(xmlDoc.DocumentElement, "DO", userInfo.Domain);

			object windowsIntegrated;

			if (true == userInfo.Properties.TryGetValue("WindowsIntegrated", out windowsIntegrated))
			{
				XmlHelper.AppendNode(xmlDoc.DocumentElement, "WI", true);
			}

			XmlHelper.AppendNode(xmlDoc.DocumentElement, "DSUID", bDontSaveUserID);
			XmlHelper.AppendNode(xmlDoc.DocumentElement, "ASI", bAutoSignIn);
			XmlHelper.AppendNode(xmlDoc.DocumentElement, "STime", DateTimeStandardFormat(DateTime.Now));
			XmlHelper.AppendNode(xmlDoc.DocumentElement, "AS", request.Url.Host + ":" + request.Url.Port);

			if (userInfo.Properties.Count > 0)
			{
				XmlNode nodeProps = XmlHelper.AppendNode(xmlDoc.DocumentElement, Resource.SignInInfoExtraProperties);

				foreach (KeyValuePair<string, object> kp in userInfo.Properties)
				{
					XmlNode nodeProp = XmlHelper.AppendNode(nodeProps, "add");

					XmlHelper.AppendAttr(nodeProp, "key", kp.Key);
					XmlHelper.AppendAttr(nodeProp, "value", kp.Value.ToString());
				}
			}

			DateTime dtExpireTime = DateTime.MaxValue;

			PassportSignInSettings settings = PassportSignInSettings.GetConfig();

			if (settings.DefaultTimeout >= TimeSpan.Zero)
				dtExpireTime = DateTime.Now.Add(settings.DefaultTimeout);
			else
				if (settings.DefaultTimeout < TimeSpan.FromSeconds(-1))
					dtExpireTime = DateTime.MinValue;
				else
					if (settings.DefaultTimeout == TimeSpan.FromSeconds(-1))
						dtExpireTime = DateTime.MaxValue;

			XmlHelper.AppendNode(xmlDoc.DocumentElement, "STimeout", DateTimeStandardFormat(dtExpireTime));

			return xmlDoc;
		}
コード例 #5
0
ファイル: SignInControl.cs プロジェクト: wooln/AK47Source
        private ISignInUserInfo OnInitSignInControl()
        {
            ISignInUserInfo result = null;

            if (InitSignInControl != null)
            {
                SignInPerformanceCounters.DoAction(() => result = InitSignInControl());
            }

            return(result);
        }
コード例 #6
0
ファイル: SignInControl.cs プロジェクト: wooln/AK47Source
        private ITicket AuthenticateUser()
        {
            HttpRequest request = HttpContext.Current.Request;

            string strSignInName = (string)PassportWebControlHelper.GetControlValue(this.TemplateControl, "signInName", "Text", string.Empty);
            string strPassword   = (string)PassportWebControlHelper.GetControlValue(this.TemplateControl, "password", "value", string.Empty);

            ISignInUserInfo userInfo = DefaultAuthenticate(strSignInName, strPassword);

            ISignInInfo signInInfo = SignInInfo.Create(userInfo,
                                                       (bool)PassportWebControlHelper.GetControlValue(this.TemplateControl, "dontSaveUserName", "Checked", false),
                                                       (bool)PassportWebControlHelper.GetControlValue(this.TemplateControl, "autoSignIn", "Checked", false));

            SignInContext signInContext = DoPostAuthenticateOP(signInInfo);

            ITicket ticket = Ticket.Create(signInInfo, request.QueryString["ip"]);

            SaveFormStatus(signInContext.PageData);

            return(ticket);
        }
コード例 #7
0
ファイル: SignInControl.cs プロジェクト: wooln/AK47Source
        /// <summary>
        /// 调用认证接口
        /// </summary>
        /// <param name="strSignInName">登录名</param>
        /// <param name="strPasspord">密码</param>
        /// <returns>用户认证的结果</returns>
        private ISignInUserInfo DefaultAuthenticate(string strSignInName, string strPasspord)
        {
            LogOnIdentity loi = new LogOnIdentity(strSignInName, strPasspord);

            OnBeforeAuthenticate(loi);

            ISignInUserInfo result = null;

            IAuthenticator2 auth2 = this.GetAuthenticator2();

            if (auth2 != null)
            {
                SignInPerformanceCounters.DoAction(() => result = auth2.Authenticate(loi.LogOnName, loi.Password, loi.Context));
            }
            else
            {
                IAuthenticator auth = GetAuthenticator();
                SignInPerformanceCounters.DoAction(() => result = auth.Authenticate(loi.LogOnName, loi.Password));
            }

            return(result);
        }
コード例 #8
0
ファイル: SignInInfo.cs プロジェクト: wooln/AK47Source
 /// <summary>
 /// 根据ISignInUserInfo创建SignInInfo
 /// </summary>
 /// <param name="userInfo"></param>
 /// <returns></returns>
 public static ISignInInfo Create(ISignInUserInfo userInfo)
 {
     return(Create(userInfo, false, false));
 }
コード例 #9
0
        /// <summary>
        /// 生成SignInInfo的Xml格式数据
        /// </summary>
        /// <param name="userInfo">用户登录信息</param>
        /// <param name="bDontSaveUserID">是否保存用户名</param>
        /// <param name="bAutoSignIn">是否自动登录</param>
        /// <returns>SignInfo的xml格式数据</returns>
        public static XmlDocument GenerateSignInInfo(ISignInUserInfo userInfo, bool bDontSaveUserID, bool bAutoSignIn)
        {
            string userID = ImpersonateSettings.GetConfig().Impersonation[userInfo.UserID];

            HttpContext context = HttpContext.Current;

            HttpRequest request = context.Request;

            XmlDocument xmlDoc = XmlHelper.CreateDomDocument("<SignInInfo/>");

            XmlHelper.AppendNode(xmlDoc.DocumentElement, "SSID", Guid.NewGuid().ToString());
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "UID", userID);
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "OUID", userInfo.OriginalUserID);
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "DO", userInfo.Domain);

            object windowsIntegrated;

            if (true == userInfo.Properties.TryGetValue("WindowsIntegrated", out windowsIntegrated))
            {
                XmlHelper.AppendNode(xmlDoc.DocumentElement, "WI", true);
            }

            XmlHelper.AppendNode(xmlDoc.DocumentElement, "DSUID", bDontSaveUserID);
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "ASI", bAutoSignIn);
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "STime", DateTimeStandardFormat(SNTPClient.AdjustedTime));
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "AS", request.Url.Host + ":" + request.Url.Port);

            if (userInfo.Properties.Count > 0)
            {
                XmlNode nodeProps = XmlHelper.AppendNode(xmlDoc.DocumentElement, Resource.SignInInfoExtraProperties);

                foreach (KeyValuePair <string, object> kp in userInfo.Properties)
                {
                    XmlNode nodeProp = XmlHelper.AppendNode(nodeProps, "add");

                    XmlHelper.AppendAttr(nodeProp, "key", kp.Key);
                    XmlHelper.AppendAttr(nodeProp, "value", kp.Value.ToString());
                }
            }

            DateTime dtExpireTime = DateTime.MaxValue;

            PassportSignInSettings settings = PassportSignInSettings.GetConfig();

            if (settings.DefaultTimeout >= TimeSpan.Zero)
            {
                dtExpireTime = DateTime.Now.Add(settings.DefaultTimeout);
            }
            else
            if (settings.DefaultTimeout < TimeSpan.FromSeconds(-1))
            {
                dtExpireTime = DateTime.MinValue;
            }
            else
            if (settings.DefaultTimeout == TimeSpan.FromSeconds(-1))
            {
                dtExpireTime = DateTime.MaxValue;
            }

            XmlHelper.AppendNode(xmlDoc.DocumentElement, "STimeout", DateTimeStandardFormat(dtExpireTime));

            return(xmlDoc);
        }
コード例 #10
0
ファイル: SignInInfo.cs プロジェクト: jerryshi2007/AK47Source
 /// <summary>
 /// 根据ISignInUserInfo创建SignInInfo
 /// </summary>
 /// <param name="userInfo"></param>
 /// <returns></returns>
 public static ISignInInfo Create(ISignInUserInfo userInfo)
 {
     return Create(userInfo, false, false);
 }