0

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

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 хранит в виде простого текста и шаблона кода хранения проход в зашифрованном формате.

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

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters.

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

+0

Вы пробовали настраивать роли для аутентифицированного пользователя, а затем украшали действие чем-то вроде [Authorize (Roles = "Admin")]? – LKC

+0

Да, я пробовал, но не мог. Может быть, что-то не так. Не могли бы вы кратко объяснить? –

+0

Есть несколько статей, которые вы можете использовать для пользовательских ролей и аутентификации, если вы не хотите использовать шаблон asp.net со встроенной аутентификацией и авторизацией http://www.dotnettricks.com/learn/mvc/custom-authentication -and-authorization-in-aspnet-mvc https://www.codeproject.com/Articles/578374/AplusBeginner-splusTutorialplusonplusCustomplusF – LKC

ответ

0

Я не уверен, района кода являются обычай, и какая версия идентичности шаблон/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).

 Смежные вопросы

  • Нет связанных вопросов^_^