我有一個問題,我是新來的身份,但我仍然想知道什麼是分配角色給用戶的正確方式,當他正在註冊?正確設置用戶在註冊身份時的角色
我這裏有一個代碼:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
IdentityRole role = new IdentityRole("Admin");
await RoleManager.CreateAsync(role);
// Store Gender as Claim
user.Claims.Add(new IdentityUserClaim() { ClaimType = ClaimTypes.Gender, ClaimValue = "Male" });
//user.Roles.Add(new IdentityUserRole() { RoleId=role.Id, UserId=user.Id });
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
//await UserManager.AddToRoleAsync(user.Id, "Admin");
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
這只是一個測試代碼,但基本上如果我使用方法UserManager.AddToROleAsync(...)它的工作原理,但是,用戶以後就只會發生補充說,所以基本上我做了兩次往返數據庫。
我試着用user.Roles.Add(...)來做,但運行時出現錯誤。
所以我的問題是什麼是最有效和最正確的做法呢?