我想知道在创建用户后如何将特定角色与该用户相关联
我在创建用户页面上有此
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Users.Add(User);
await _context.SaveChangesAsync();
_toastNotification.AddSuccessToastMessage("Utilizador Adicionado com sucesso");
return RedirectToPage("./Index");
}
我已经尝试过模型
public User()
{
IsActivo = true;
UserRoles.Add(new UserRole { RoleId = 4 });
}
这并非不幸。
答案 0 :(得分:1)
对于用户和角色,您都应该使用关联的管理器:UserManager<TUser>
和RoleManager<TRole>
。除了管理人员要处理的简单持久性之外,还有很多事情需要发生,而直接添加到上下文中则不需要。不过,在这里,您只需要UserManager<TUser>
就可以处理所有事情。
public class RegisterModel : PageModel
{
private readonly UserManager<IdentityUser> _userManager;
public RegisterModel(UserManager<IdentityUser> userManager)
{
_userManager = userManager;
}
...
}
然后:
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
await _userManager.CreateUserAsync(User);
await _userManager.AddToRoleAsync(User, "foo"); // where "foo" is the name of your role
_toastNotification.AddSuccessToastMessage("Utilizador Adicionado com sucesso");
return RedirectToPage("./Index");
}
答案 1 :(得分:0)
好吧,我花了一些时间重读实体框架教程,这对我有用
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Users.Add(User);
_context.UserRoles.Add(new UserRole { User = User, Role = _context.Roles.FirstOrDefault(r => r.Nome == "User")});
await _context.SaveChangesAsync();
_toastNotification.AddSuccessToastMessage("Utilizador Adicionado com sucesso");
return RedirectToPage("./Index");
}