За последние пару дней я пытался получить функции входа в систему для моего приложения ASP.NET MVC. Пользовательские данные для моего приложения хранятся в базе данных MS SQL (2008 R2). Таблица для этих данных выглядит следующим образом:
table EMPLOYEE
EMPLOYEECODE int identity
NAME varchar(75) not null
PASSWORD varchar(255) not null
Что приводит к следующей модели с использованием платформы Entity Framework:
public partial class EMPLOYEE
{
public int EMPLOYEECODE { get; set; }
public string NAME { get; set; }
public string PASSWORD { get; set; }
}
Что бы я хотел сделать, это отредактировать предоставленный (по умолчанию) AccountController, чтобы он мог использовать EMPLOYEE (EMPLOYEECODE, PASSWORD) для проверки и входа в систему пользователей. Я думаю, мне нужно изменить UserManager, чтобы он использовал EMPLOYEE и поля EMPLOYEECODE и PASSWORD, но я не знаю, как это сделать. Текущий метод входа выглядит следующим образом:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Мой UserManager определяется следующим образом:
public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
}
Как я могу решить эту проблему? Я также пытался использовать cookie проверки подлинности, но я не знаю, как я могу получить имя пользователя из файла cookie. Любая помощь будет высоко оценен!
У меня была аналогичная просьба, и в итоге я сделал следующее:
Если ваши пароли необходимо хэшировать, вместо переноса данных, посмотрите, как пользователи зарегистрированы в Identity и помещают ваших существующих пользователей в один и тот же процесс:
UserManager и UserStore связаны с аутентификацией удостоверения ASP.NET с собственными таблицами для пользователей, ролей и т.д. Если вы хотите использовать разные таблицы, вам необходимо создать пользовательскую функцию входа в систему.