/// <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(); } } } }
/// <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)); }
/// <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); }
/// <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; }
private ISignInUserInfo OnInitSignInControl() { ISignInUserInfo result = null; if (InitSignInControl != null) { SignInPerformanceCounters.DoAction(() => result = InitSignInControl()); } return(result); }
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); }
/// <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); }
/// <summary> /// 根据ISignInUserInfo创建SignInInfo /// </summary> /// <param name="userInfo"></param> /// <returns></returns> public static ISignInInfo Create(ISignInUserInfo userInfo) { return(Create(userInfo, false, false)); }
/// <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); }
/// <summary> /// 根据ISignInUserInfo创建SignInInfo /// </summary> /// <param name="userInfo"></param> /// <returns></returns> public static ISignInInfo Create(ISignInUserInfo userInfo) { return Create(userInfo, false, false); }