Exemplo n.º 1
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (DbEntryMembershipUser.GetCount(Condition.Empty) == 0)
     {
         Membership.CreateUser("admin", "admin");
     }
 }
        private void UpdateFailureCount(DbEntryMembershipUser user, string failureType)
        {
            var windowStart = new DateTime();
            int failureCount = 0;

            if (failureType == "password")
            {
                failureCount = user.FailedCount;
                try
                {
                    windowStart = user.FailedStart;
                }
                catch
                {
                    windowStart = DateTime.Now;
                }
            }

            if (failureType == "passwordAnswer")
            {
                failureCount = user.FailedAnswerCount;
                windowStart = user.FailedAnswerStart;
            }

            var windowEnd = windowStart.AddMinutes(PasswordAttemptWindow);
            var utcNow = DateTime.Now;
            if (failureCount == 0 || utcNow > windowEnd)
            {
                if (failureType == "password")
                {
                    user.FailedCount = 1;
                    user.FailedStart = DateTime.Now;
                    user.Save();
                }
                if (failureType == "passwordAnswer")
                {
                    user.FailedAnswerCount = 1;
                    user.FailedAnswerStart = DateTime.Now;
                    user.Save();
                }
            }
            else
            {
                if (failureCount++ >= MaxInvalidPasswordAttempts)
                {
                    user.IsLockedOut = true;
                    user.LastLockoutDate = DateTime.Now;
                    user.Save();
                }
                else
                {
                    if (failureType == "password")
                        user.FailedCount = failureCount;

                    if (failureType == "passwordAnswer")
                        user.FailedAnswerCount = failureCount;
                    user.Save();
                }
            }
        }
 private bool CheckPassword(string password, DbEntryMembershipUser user)
 {
     return user.Password.Equals(EncodePassword(password,user.PasswordFormat,user.PasswordSalt));
 }
        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            var args = new ValidatePasswordEventArgs(username, password, true);

            OnValidatingPassword(args);

            if (args.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            if (RequiresUniqueEmail && !string.IsNullOrWhiteSpace(GetUserNameByEmail(email)))
            {
                status = MembershipCreateStatus.DuplicateEmail;
                return null;
            }

            MembershipUser u = GetUser(username, false);
            if (u == null)
            {
                DateTime createDate = DateTime.Now;

                passwordQuestion = string.IsNullOrWhiteSpace(passwordQuestion) ? string.Empty : passwordQuestion;
                passwordAnswer = string.IsNullOrWhiteSpace(passwordAnswer) ? string.Empty : passwordAnswer;
                string salt = GenerateSalt();
                var user = new DbEntryMembershipUser
                               {
                                   UserName = username,
                                   Password = EncodePassword(password, (int)this.PasswordFormat, salt),
                                   PasswordFormat = PasswordFormat.GetHashCode(),
                                   PasswordSalt = salt,
                                   Email = email,
                                   LoweredEmail = email == null ? string.Empty : email.ToLowerInvariant(),
                                   PasswordQuestion = passwordQuestion,
                                   PasswordAnswer = passwordAnswer,
                                   IsApproved = isApproved,
                                   IsLockedOut = false,
                                   LastLoginDate = createDate,
                                   LastPasswordChangedDate = createDate,
                                   LastLockoutDate = createDate,
                                   FailedCount = 0,
                                   FailedStart = createDate,
                                   FailedAnswerCount = 0,
                                   FailedAnswerStart = createDate,
                                   LastActivityDate = createDate,
                                   Comment = string.Empty
                               };
                    //.Init(username, password, email, passwordQuestion, passwordAnswer, isApproved, null);
                //     user.CreateDate = createDate;
                user.Save();
                status = MembershipCreateStatus.Success;
                return GetUser(username, false);
            }
            status = MembershipCreateStatus.DuplicateUserName;

            return null;
        }