Używam asp.net Identity 2.0, aby użytkownicy logowali się na mojej stronie internetowej, gdzie dane uwierzytelniające są przechowywane w bazie danych SQL. Asp.net Tożsamość została zaimplementowana w standardowy sposób, jak można znaleźć w wielu tutorialach online.Jak przedłużyć IdentityUser z niestandardową właściwością?
Klasa w IdentityModels
ApplicationUser
został rozszerzony o właściwość niestandardową:
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; }
}
Kiedy zarejestrować nowego użytkownika mijam właściwość Code
niestandardowy w RegisterBindingModel
ale nie jestem pewien, jak wstawić ten własność niestandardową do tabeli WebUsers.
Zrobiłem jak poniżej, ale tak naprawdę nie wstawia tej właściwości do tabeli razem z nazwą użytkownika i hasłem.
var user = new ApplicationUser() { UserName = userName, Email = model.Email, Code=model.Code };
i cała funkcja:
[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();
}
Czego mi brakuje? Szukałem podobnych pytań, ale nie mogłem znaleźć odpowiedzi na to pytanie.
Myślę, że twój kod jest OK, czy jesteś pewien, że właściwość 'Code' jest wpisywana w parametrze' model'? – jumuro
Tak, jestem pewien, sprawdziłem to. Ale kiedy sprawdzam tabelę w bazie danych, pojawia się nowy użytkownik, ale pole kodu ma zawsze wartość "null". – user3378165
W jaki sposób definiuje się menedżer użytkownika? Zajrzyj na https://github.com/tjoudeh/AspNetIdentity.WebApi –