Visual Studio MVC 5 войти без пароля - PullRequest
0 голосов
/ 21 сентября 2018

Я использую Visual Studio MVC 5 с шаблоном учетной записи, который обрабатывает вход в систему и т. Д. Я хочу войти в систему как пользователь без пароля.Я пробовал это:

var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

, но затем я получаю сообщение об ошибке "UserId not found."

Я создал пользователя с этим:

var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, Guid.NewGuid().ToString());
if (result.Succeeded)
{
    await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}

После этогоЯ вошел в систему, и после того, как я хотел войти снова, я получаю эту ошибку.


Редактировать .: Я знаю, что не так.
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
также создает новый идентификатор.Я думаю, что это неправильный способ входа в систему ..

Нормальный способ входа в систему - SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
Но там мне нужен пароль.
Как войти в систему без пароля?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Ваш объект ApplicationUser не имеет идентификатора, поэтому вы получаете эту ошибку.

попробуйте это:

var user = await _userManager.FindByNameAsync(model.Email);
await _signInManager.SignInAsync(user, isPersistent: false);

Вы также можете использовать:

var user = await _userManager.FindByEmailAsync(model.Email);

Надеюсьэто помогает!

0 голосов
/ 21 сентября 2018

После некоторой попытки и ошибки.Вы должны иметь пользователя ApplicationUser с правильными данными, как будто они сохранены в вашей базе данных.
Чтобы получить своего пользователя, вам нужно сделать следующее:

ApplicationUser user = UserManager.FindByEmailAsync(model.Email).Result;

и передать его в функцию SignInAsync.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...