
[英]How to assign a default role to a user in Many-To-Many relation table without adding that role as new to the Role table
[英]Automatically assign default role
如何自动将默认角色分配给注册用户。 我正在尝试此操作,但是它不起作用,并且出现错误:
[ProviderException: The role 'Member' was not found.]
这是我的工作:
给我的默认角色添加种子,使其从一开始就存在:
// Configuration.cs, Seed method.
if (!context.Roles.Any(r => r.Name == "Member"))
{
var store = new RoleStore<IdentityRole>(context);
var manager = new RoleManager<IdentityRole>(store);
var role = new IdentityRole { Name = "Member" };
manager.Create(role); // Member role gets created in AspNetRoles table.
}
在更新数据库之后,我向该角色添加了一个注册用户:
// AccountController, Register method (POST).
var user = new ApplicationUser { ... }
if (.. Succeeded)
{
..
if (!Roles.IsUserInRole(user.UserName, "Member"))
Roles.AddUserToRole(user.UserName, "Member");
return RedirectToAction("Index", "Home");
}
注册新帐户时,出现错误:
[ProviderException: The role 'Member' was not found.] // Member exits in AspNetRoles
Line 176: if (!Roles.IsUserInRole(user.UserName, "Member"))
Line 177: Roles.AddUserToRole(user.UserName, "Member");
我认为您使用了错误的角色管理器。 Roles
很可能是“ Simple Membership
角色提供者,而不是Identity
的一个。 请尝试以下操作:
if (.. Succeeded)
{
..
// if (!await UserManager.IsInRoleAsync(user.Id, "Member"))
await UserManager.AddToRoleAsync(user.Id, "Member");
return RedirectToAction("Index", "Home");
}
我注释掉了IsInRoleAsync
-check,因为如果您只是创建用户,则不需要IMO。
如果尚未完成,则需要创建一个异步操作以使用async
/ await
:
public async Task<ActionResult> Register(RegisterModel model)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.