CodeFirstMembershipProvider.ExtendedValidateUser C# (CSharp) Method

ExtendedValidateUser() public method

public ExtendedValidateUser ( string userNameOrEmail, string password ) : string
userNameOrEmail string
password string
return string
        public override string ExtendedValidateUser(string userNameOrEmail, string password)
        {
            if (string.IsNullOrEmpty(userNameOrEmail))
                    {
                        throw CreateArgumentNullOrEmptyException("userNameOrEmail");
                    }
                    if (string.IsNullOrEmpty(password))
                    {
                        throw CreateArgumentNullOrEmptyException("password");
                    }
                    using ($safeprojectname$Context context = new $safeprojectname$Context())
                    {
                        User user = null;
                        user = context.Users.FirstOrDefault(Usr => Usr.Username == userNameOrEmail);
                        if (user == null)
                        {
                            user = context.Users.FirstOrDefault(Usr => Usr.Email == userNameOrEmail);
                        }
                        if (user == null)
                        {
                            return string.Empty;
                        }
                        if (!user.IsConfirmed)
                        {
                            return string.Empty;
                        }
                        dynamic hashedPassword = user.Password;
                        bool verificationSucceeded = (hashedPassword != null && CodeFirstCrypto.VerifyHashedPassword(hashedPassword, password));
                        if (verificationSucceeded)
                        {
                            user.PasswordFailuresSinceLastSuccess = 0;
                        }
                        else
                        {
                            int failures = user.PasswordFailuresSinceLastSuccess;
                            if (failures != -1)
                            {
                                user.PasswordFailuresSinceLastSuccess += 1;
                                user.LastPasswordFailureDate = DateTime.UtcNow;
                            }
                        }
                        context.SaveChanges();
                        if (verificationSucceeded)
                        {
                            return user.Username;
                        }
                        else
                        {
                            return string.Empty;
                        }
                    }
        }

Usage Example

Example #1
0
        public ActionResult LogOn(LogOnModel model, string returnUrl)
        {
            CodeFirstMembershipProvider provider = new CodeFirstMembershipProvider();

            if (ModelState.IsValid)
            {
                if (provider.ExtendedValidateUser(model.UserName.ToString(), model.Password.ToString()))
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") &&
                        !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                    {
                        return(Redirect(returnUrl));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }