Я использую asp.net Identity 2.0 для входа на мой сайт, где данные аутентификации хранятся в базе данных SQL. Идентификация Asp.net была реализована стандартным способом, как это можно найти во многих онлайн-учебниках.
Класс ApplicationUser
в IdentityModels
был расширен для включения настраиваемого свойства:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType)
{
CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
return userIdentity;
}
//My extended property
public string Code { get; set; }
}
Когда я регистрирую нового пользователя, я передаю Code
настраиваемое свойство в RegisterBindingModel
, но я не уверен, как вставить это настраиваемое свойство в таблицу WebUsers.
Я сделал это ниже, но на самом деле он не вставляет это свойство в таблицу вместе с именем пользователя и паролем.
var user = new ApplicationUser() { UserName = userName, Email = model.Email, Code=model.Code };
И вся функция:
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var userName = !string.IsNullOrEmpty(model.UserName) ? model.UserName : model.Email;
//I set it here but it doesn't get inserted to the table.
var user = new ApplicationUser() { UserName = userName, Email = model.Email, Code=model.Code };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
Что мне не хватает? Я смотрел на подобные вопросы, но не мог найти ответа для этого.