Ich brauchte eine Weile um herauszufinden, aber ich habe es endlich verstanden. Anthony bitte entschuldige mich, aber ich werde viel von deinem Code veröffentlichen, damit dumme Entwickler wie ich es verstehen können.
In der neuesten WebAPI2 (Visual Studio 2013 Update 2) die Registrierungsverfahren wie so aussehen:
// POST api/Account/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
Was möchten Sie tun, ist es ersetzen mit diesem:
// POST api/Account/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
IdentityResult result;
using (var context = new ApplicationDbContext())
{
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
await roleManager.CreateAsync(new IdentityRole() { Name = "Admin" });
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
result = await UserManager.CreateAsync(user, model.Password);
await userManager.AddToRoleAsync(user.Id, "Admin");
}
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
Nun, wenn Sie sollten es richtig funktionieren, aber Sie können auf ein weiteres Problem stoßen. Nachdem ich das getan hatte, beschwerte sich meine Antwort über die DB.
The model backing the <Database> context has changed since the database was created
Um diesen Fehler zu beheben, musste ich in die Package Manager-Konsole gehen und Migrationen aktivieren.
Enable-Migrations –EnableAutomaticMigrations
Dann:
Add Migration
Endlich:
Update-Database
Ein guter Beitrag zur Aktivierung von hier Migrationen: http://msdn.microsoft.com/en-us/data/jj554735.aspx
Perfect. Danke für die Hilfe! –
Wo muss ich diesen Code oben setzen? Danke @BenDrury – andrefadila
@andrefadila Dieser Code muss überall in Ihrem Code gehen, um eine neue Rolle zu erstellen. Normalerweise würden diese während der Entwicklung, aber möglicherweise in Ihrem Admin-Code eingerichtet werden. Verwenden Sie zum Hinzufügen von Benutzern zu Rollen den Code, wenn Sie einen neuen Benutzer erstellen. –