Ошибка: ввод содержит не базовый 64 символ, более двух символов заполнения

Я использую встроенный шаблон ASP .NET MVC для аутентификации. Для некоторых ролей настройки я скопировал код нового пользователя регистрации на другую страницу и сохранил его в базе данных следующим образом.

public void adduser(AdduserModel role){
    ApplicationUser appUser = new ApplicationUser() { Email = role.Email, PasswordHash = role.Password, UserName = role.Email, EmailConfirmed = true };
    var manager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
    var response = manager.Create(appUser);
}

И в шаблоне AccountController выглядит следующим образом

 public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    var user = await UserManager.FindByNameAsync(model.Email);

    // Session["UserName"] = model.Email;
    // This doesn't count login failures towards account lockout
    // To enable password failures to trigger account lockout, change to shouldLockout: true
    var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
}

Оба хранят пароль, адрес электронной почты и т. Д. В пароле, но myCode хранится в виде обычного текста, а код шаблона хранит проход в зашифрованном формате.

Когда я пытаюсь войти в систему, зарегистрированный пользователь шаблона работает правильно и входит в систему, но мой код дает мне следующую ошибку.

Введенная строка не является допустимой строкой Base-64, так как она содержит символ, отличный от Base 64, более двух символов заполнения или символ, отличный от пробела, среди символов заполнения.

Как я могу это решить?


person naila naseem    schedule 21.01.2017    source источник
comment
Вы пытались настроить роли для аутентифицированного пользователя, а затем украсить действие чем-то вроде [Авторизовать (Роли = Администратор)]?   -  person LKC    schedule 21.01.2017
comment
Да, я пытался, но не смог. Может быть, что-то не так. Можете вкратце объяснить?   -  person naila naseem    schedule 21.01.2017
comment
Есть несколько статей, которым вы можете следовать для пользовательских ролей и аутентификации, если вы не хотите использовать шаблон asp.net со встроенной аутентификацией и авторизацией dotnettricks.com/learn/mvc/ codeproject.com/Articles/578374/   -  person LKC    schedule 21.01.2017


Ответы (1)


Я не уверен, какая область кода является пользовательской и какую версию идентификатора шаблона/asp.net вы используете, но если вы используете стандартный UserManager, попробуйте:

ApplicationUser appUser = new ApplicationUser() { Email = role.Email, UserName = role.Email, EmailConfirmed = true };

var manager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();

var response = manager.Create(appUser, role.password);

Поскольку UserManager должен обрабатывать шифрование для вас.

Просто передайте открытый текстовый пароль при вызове manager.Create и не включайте его в создание первой строки (ApplicationUser).

person Si Bxxx    schedule 22.01.2017