ComputeSecurityHash() публичный статический Метод

Computes the Hash of a Username, mixing it with other data, in order to avoid illegal Account activations.
public static ComputeSecurityHash ( string username, string email, System.DateTime dateTime ) : string
username string The Username.
email string The email.
dateTime System.DateTime The date/time.
Результат string
Пример #1
0
        /// <summary>
        /// Loads the user for the password reset procedure.
        /// </summary>
        /// <returns>The user, or <c>null</c>.</returns>
        private UserInfo LoadUserForPasswordReset()
        {
            UserInfo user = Users.FindUser(Request["Username"]);

            if (user != null && Request["ResetCode"] == Tools.ComputeSecurityHash(user.Username, user.Email, user.DateTime))
            {
                return(user);
            }
            return(null);
        }
Пример #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Title = Properties.Messages.LoginTitle + " - " + Settings.WikiTitle;

            rxNewPassword1.ValidationExpression = Settings.PasswordRegex;
            rxNewPassword2.ValidationExpression = Settings.PasswordRegex;

            lblResult.Text     = "";
            lblResult.CssClass = "";

            lblLostPassword.Text = Properties.Messages.LostPassword;

            PrintLoginNotice();

            if (Request["ForceLogout"] != null)
            {
                Logout();
                Session[LoginTools.Logout] = true;
                if (Request["Redirect"] != null)
                {
                    Response.Redirect(Request["Redirect"]);
                }

                return;
            }

            // In case of provider supporting autologin, a user might not be able to logout
            // without applying a "filter" because the provider might keep logging her in.
            // When she clicks Logout and redirects to Login.aspx?Logout=1 a flag is set,
            // avoiding autologin for the current session - see LoginTools class
            if (Request["Logout"] != null)
            {
                Session[LoginTools.Logout] = true;
            }

            // All the following logic must be executed only on first page request
            if (Page.IsPostBack)
            {
                return;
            }

            if (SessionFacade.LoginKey != null)
            {
                mlvLogin.ActiveViewIndex = 0;
                lblLogout.Text           = "<b>" + SessionFacade.CurrentUsername + "</b>, " + lblLogout.Text;
            }
            else
            {
                if (Request["PasswordReset"] != null)
                {
                    mlvLogin.ActiveViewIndex = 2;
                }
                else if (Request["ResetCode"] != null && Request["Username"] != null)
                {
                    if (LoadUserForPasswordReset() != null)
                    {
                        mlvLogin.ActiveViewIndex = 3;
                    }
                }
                else
                {
                    mlvLogin.ActiveViewIndex = 1;
                }
            }

            if (Request["Activate"] != null && Request["Username"] != null && !Page.IsPostBack)
            {
                UserInfo user = Users.FindUser(Request["Username"]);
                if (user != null && Tools.ComputeSecurityHash(user.Username, user.Email, user.DateTime).Equals(Request["Activate"]))
                {
                    Log.LogEntry("Account activation requested for " + user.Username, EntryType.General, Log.SystemUsername);
                    if (user.Active)
                    {
                        lblResult.CssClass = "resultok";
                        lblResult.Text     = Properties.Messages.AccountAlreadyActive;
                        return;
                    }
                    if (user.DateTime.AddHours(24).CompareTo(DateTime.Now) < 0)
                    {
                        // Too late
                        lblResult.CssClass = "resulterror";
                        lblResult.Text     = Properties.Messages.AccountNotFound;
                        // Delete user (is this correct?)
                        Users.RemoveUser(user);
                        return;
                    }
                    // Activate User
                    Users.SetActivationStatus(user, true);
                    lblResult.CssClass = "resultok";
                    lblResult.Text     = Properties.Messages.AccountActivated;
                    return;
                }
                lblResult.CssClass = "resulterror";
                lblResult.Text     = Properties.Messages.AccountNotActivated;
                return;
            }
        }
Пример #3
0
        protected void btnRegister_Click(object sender, EventArgs e)
        {
            if (!Settings.UsersCanRegister)
            {
                return;
            }

            lblResult.Text     = "";
            lblResult.CssClass = "";

            Page.Validate();
            if (!Page.IsValid)
            {
                return;
            }

            // Ready to save the user
            Log.LogEntry("Account creation requested for " + txtUsername.Text, EntryType.General, Log.SystemUsername);
            Users.AddUser(txtUsername.Text, txtDisplayName.Text, txtPassword1.Text, txtEmail1.Text,
                          Settings.AccountActivationMode == AccountActivationMode.Auto, null);

            UserInfo newUser = Users.FindUser(txtUsername.Text);

            // Set membership to default Users group
            Users.SetUserMembership(newUser, new string[] { Settings.UsersGroup });

            if (Settings.AccountActivationMode == AccountActivationMode.Email)
            {
                string body = Settings.Provider.GetMetaDataItem(MetaDataItem.AccountActivationMessage, null);
                body = body.Replace("##WIKITITLE##", Settings.WikiTitle).Replace("##USERNAME##", newUser.Username).Replace("##EMAILADDRESS##", Settings.ContactEmail);
                body = body.Replace("##ACTIVATIONLINK##", Settings.MainUrl + "Login.aspx?Activate=" + Tools.ComputeSecurityHash(newUser.Username, newUser.Email, newUser.DateTime) + "&Username="******"Account Activation - " + Settings.WikiTitle, body, false);
            }

            lblResult.CssClass  = "resultok";
            lblResult.Text      = "<br /><br />" + Properties.Messages.AccountCreated;
            btnRegister.Enabled = false;
            pnlRegister.Visible = false;
        }