Asp Core добавляет новый способ регистрации пользователей через Identity

У меня есть вопрос, у меня есть веб-приложение на Asp Net Core 1.1.0 с реализованной классической моделью идентификации и OpenIddict для авторизации.

В классической реализации при регистрации пользователя с использованием электронной почты / пароля мне необходимо реализовать возможность регистрации также с помощью CodeNumber (длина числовой последовательности из 15 символов) в качестве имени пользователя и пин-кода (числовая комбинация из 4 символов) в качестве пароля.

CodeNumber и PinCode будут храниться отдельно от таблицы User Indentity.

Чтобы пользователи могли использовать два метода для входа в систему

Подскажите пожалуйста, как этого можно добиться в Asp .Net Core? Заранее спасибо.


person 3axap    schedule 07.08.2017    source источник


Ответы (1)


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

var user = db.Users.Where(m => m.CodeNumber == model.CodeNumber && m.PinCode == model.PinCode);
if (user == null)
{
    ModelState.AddModelError("", "Incorrect code number and/or pin code");
}

Затем просто войдите в систему вручную, если они существуют:

await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
person Chris Pratt    schedule 07.08.2017