Пример #1
0
        /// <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
        private void InitScript()
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SignInScriptOnload", Resource.signInControlScript);

            string template = ResourceHelper.LoadStringFromResource(
                Assembly.GetExecutingAssembly(),
                "MCS.Library.Passport.Controls.SignInControlInitScript.htm");

            string script = string.Format(template, PassportWebControlHelper.GetControlValue(this.TemplateControl, "signInName", "ClientID", string.Empty),
                                          PassportWebControlHelper.GetControlValue(this.TemplateControl, "password", "ClientID", string.Empty));

            Page.ClientScript.RegisterStartupScript(
                this.GetType(),
                "SignInScriptOnload",
                script, true);

            Control detailErrorMessageLink = PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "detailErrorMessageLink");

            if (detailErrorMessageLink != null && detailErrorMessageLink is HtmlContainerControl)
            {
                ((HtmlContainerControl)detailErrorMessageLink).Attributes["onclick"] =
                    string.Format("return doDetailErrorMessageClick(\"{0}\");",
                                  PassportWebControlHelper.GetControlValue(this.TemplateControl, "detailErrorMessage", "ClientID", string.Empty));
            }
        }
        private void InitScript()
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SignInScriptOnload", Resource.changePasswordScript, true);

            Page.ClientScript.RegisterStartupScript(this.GetType(), "ChangePasswordScriptOnload",
                                                    string.Format("window.attachEvent(\"onload\", new Function(\"initControlsFocus('{0}', '{1}')\"));",
                                                                  PassportWebControlHelper.GetControlValue(this.TemplateControl, "signInName", "ClientID", string.Empty),
                                                                  PassportWebControlHelper.GetControlValue(this.TemplateControl, "oldPassword", "ClientID", string.Empty)), true);

            Control detailErrorMessageLink = PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "detailErrorMessageLink");

            if (detailErrorMessageLink != null && detailErrorMessageLink is HtmlContainerControl)
            {
                ((HtmlContainerControl)detailErrorMessageLink).Attributes["onclick"] =
                    string.Format("doDetailErrorMessageClick(\"{0}\")",
                                  PassportWebControlHelper.GetControlValue(this.TemplateControl, "detailErrorMessage", "ClientID", string.Empty));
            }

            this.updateButton.OnClientClick = string.Format("beforeSubmit(\"{0}\", \"{1}\", \"{2}\", \"{3}\")",
                                                            PassportWebControlHelper.GetControlValue(this.TemplateControl, "signInName", "ClientID", string.Empty),
                                                            PassportWebControlHelper.GetControlValue(this.TemplateControl, "errorMessage", "ClientID", string.Empty),
                                                            PassportWebControlHelper.GetControlValue(this.TemplateControl, "newPassword", "ClientID", string.Empty),
                                                            PassportWebControlHelper.GetControlValue(this.TemplateControl, "confirmPassword", "ClientID", string.Empty));

            IAttributeAccessor backButton = (IAttributeAccessor)PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "backButton");

            if (backButton != null)
            {
                backButton.SetAttribute("backUrl", this.GetBackUrl());
                backButton.SetAttribute("onclick", "onBackButtonClick();");
            }
        }
Пример #4
0
        private SignInPageData CollectPageData()
        {
            string strSignInName = (string)PassportWebControlHelper.GetControlValue(this.TemplateControl, "signInName", "Text", string.Empty);

            this.PageData.UserID         = strSignInName;
            this.PageData.DontSaveUserID = (bool)PassportWebControlHelper.GetControlValue(this.TemplateControl, "dontSaveUserName", "Checked", false);
            this.PageData.AutoSignIn     = (bool)PassportWebControlHelper.GetControlValue(this.TemplateControl, "autoSignIn", "Checked", false);

            return(this.PageData);
        }
Пример #5
0
        private void RedirectToAppUrl(ITicket ticket)
        {
            PassportManager.SignInServiceRedirectToApp(ticket);

            if (ticket.SignInInfo != null && Page.IsPostBack)
            {
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "errorMessage", "ForeColor", Color.Green);
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "errorMessage", "Text", "已经登录成功");
            }
        }
Пример #6
0
        private void InitForm(SignInPageData pd)
        {
            if (pd.DontSaveUserID == false)
            {
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "signInName", "Text", pd.UserID);
            }

            PassportWebControlHelper.SetControlValue(this.TemplateControl, "autoSignIn", "Checked", pd.AutoSignIn);
            PassportWebControlHelper.SetControlValue(this.TemplateControl, "dontSaveUserName", "Checked", pd.DontSaveUserID);
            PassportWebControlHelper.SetControlValue(this.TemplateControl, "autoSignIn", "Visible", PassportSignInSettings.GetConfig().IsSessionBased == false);
        }
Пример #7
0
        private SignInContext DoPostAuthenticateOP(ISignInInfo signInInfo)
        {
            SignInContext result = new SignInContext(
                SignInResultType.Success,
                signInInfo.UserID, signInInfo,
                CollectPageData(),
                (string)PassportWebControlHelper.GetControlValue(this.TemplateControl, "clientEnv", "Value", string.Empty),
                null);

            OnSignInComplete(result);

            PassportSignInSettings.GetConfig().PersistSignInInfo.SaveSignInInfo(signInInfo);

            signInInfo.SaveToCookie();

            return(result);
        }
        private void Initialize()
        {
            this.updateButton = (Button)PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "changePasswordButton");

            if (this.updateButton != null)
            {
                this.updateButton.Click += new EventHandler(updateButton_Click);
            }

            if (this.Page.IsPostBack == false)
            {
                if (HttpContext.Current.User != null)
                {
                    PassportWebControlHelper.SetControlValue(this.TemplateControl, "signInName", "Text", HttpContext.Current.User.Identity.Name);
                }
            }
        }
Пример #9
0
        /// <summary>
        /// 判断SignInInfo状态,如果在SignInInfo合法情况下,基于Session的Cookie,或者用户选择自动登录的进行自动登录。
        /// </summary>
        private void Initialize()
        {
            Control signInBtn = PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "SignInButton");

            if (signInBtn != null && signInBtn is IButtonControl)
            {
                ((IButtonControl)signInBtn).Click += new EventHandler(SignInButton_Click);
            }

            if (Page.IsPostBack == false)
            {
                //从Cookie中得到登录信息
                ISignInInfo signInInfo = SignInInfo.LoadFromCookie();

                if (signInInfo != null)
                {
                    Trace.WriteLine(string.Format("认证服务,从cookie中得到用户{0}的认证信息", signInInfo.UserID), "PassportSDK");
                }

                this._PageData.LoadFromCookie();

                PassportSignInSettings settings = PassportSignInSettings.GetConfig();

                if (IsSignInInfoInvalid(signInInfo) == false)   //SignIn Info非法
                {
                    if (settings.IsSessionBased || this.PageData.AutoSignIn)
                    {
                        if (IsSelfAuthenticate == false)
                        {
                            AutoSignIn(signInInfo);     //May be execute Response.End when redirect to app's url
                        }
                    }
                }

                if (Page.IsPostBack == false)
                {
                    InitForm(this.PageData);
                }

                Page.Response.Expires = 0;
            }
        }
Пример #10
0
        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);
        }
Пример #11
0
        private void SignInButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                ITicket ticket = AuthenticateUser();

                RedirectToAppUrl(ticket);
            }
            catch (System.Threading.ThreadAbortException)
            {
            }
            catch (System.Exception ex)
            {
                System.Exception realEx = ex.GetRealException();

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

                SignInContext signInContext = new SignInContext(
                    SignInResultType.Fail,
                    strSignInName,
                    null,
                    CollectPageData(),
                    (string)PassportWebControlHelper.GetControlValue(this.TemplateControl, "clientEnv", "Value", string.Empty),
                    realEx);

                OnSignInComplete(signInContext);

                PassportWebControlHelper.SetControlValue(this.TemplateControl, "errorMessage", "Text", HttpUtility.HtmlEncode(realEx.Message));
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "errorMessage", "ForeColor", Color.Red);
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "detailErrorMessage", "Text", HttpUtility.HtmlEncode(ex.StackTrace));

                Control detailErrorMessageLink = PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "detailErrorMessageLink");

                if (detailErrorMessageLink != null && detailErrorMessageLink is HtmlContainerControl)
                {
                    ((HtmlContainerControl)detailErrorMessageLink).Style["display"] = "block";
                }
            }
        }
        private void updateButton_Click(object sender, EventArgs e)
        {
            try
            {
                string userID      = PassportWebControlHelper.GetControlValue(this.TemplateControl, "signInName", "Text", string.Empty);
                string oldPassword = PassportWebControlHelper.GetControlValue(this.TemplateControl, "oldPassword", "Value", string.Empty);
                string newPassword = PassportWebControlHelper.GetControlValue(this.TemplateControl, "newPassword", "Value", string.Empty);

                ChangeUserPassword(userID, oldPassword, newPassword);

                if (AutoRedirect)
                {
                    HttpContext.Current.Response.Redirect(this.ReferUrl, true);
                }
                else
                {
                    if (string.IsNullOrEmpty(this.SuccessUrl) == false)
                    {
                        HttpContext.Current.Response.Redirect(this.SuccessUrl, true);
                    }
                }
            }
            catch (System.Exception ex)
            {
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "errorMessage", "Text",
                                                         HttpUtility.HtmlEncode(ExceptionHelper.GetRealException(ex).Message));
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "errorMessage", "ForeColor", Color.Red);
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "detailErrorMessage", "Text", HttpUtility.HtmlEncode(ex.StackTrace));

                Control detailErrorMessageLink = PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "detailErrorMessageLink");

                if (detailErrorMessageLink != null && detailErrorMessageLink is HtmlContainerControl)
                {
                    ((HtmlContainerControl)detailErrorMessageLink).Style["display"] = "block";
                }
            }
        }
Пример #13
0
 private string GetViewStateString(string strKey)
 {
     return((string)PassportWebControlHelper.GetViewState(this.ViewState, strKey, string.Empty));
 }