我如何使用IdentityUserRoles?



我是Razorpages的新手,希望在IdentityUser中包含用户的角色(我已经用ApplicationUser覆盖了自定义组名)。因此存在一个表UserRoles,但是我不能将UserRoles连接到IdentityUser。

这将作为一个小用户管理器来设置组(例如部门)和分配角色。

这是我想要完成的:

<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.ApplicationUser[0].UserName)
</th>
<th>
@Html.DisplayNameFor(model => model.ApplicationUser[0].Group)
</th>
<th>
@Html.DisplayNameFor(model => model.ApplicationUser[0].Role)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.ApplicationUser)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Group.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Role.Name)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.Id">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>

任何帮助都是感激的-非常感谢!

. NET 5.0 Blazor服务器项目,与EF Core,我遵循身份模型定制的指导方针,最初创建自定义ApplicationUser类,从IdentityUser继承(我相信你在这里做了同样的事情)。在我的例子中,我还将PK类型更改为GUID。

public class ApplicationUser : IdentityUser<Guid>
{
public virtual ICollection<IdentityUserClaim<Guid>> Claims { get; set; }
public virtual ICollection<IdentityUserLogin<Guid>> Logins { get; set; }
public virtual ICollection<IdentityUserToken<Guid>> Tokens { get; set; }
public virtual ICollection<ApplicationUserRole> UserRoles { get; set; }

与IdentityUser一样,我也必须为IdentityRole创建自定义类:

public class ApplicationRole : IdentityRole<Guid>
{
public virtual ICollection<ApplicationUserRole> UserRoles { get; set; }

…以及IdentityUserRole类:

public class ApplicationUserRole : IdentityUserRole<Guid>
{
public virtual ApplicationUser User { get; set; }
public virtual ApplicationRole Role { get; set; }
}

然后更新我的ApplicationDBContext以引用自定义类:

public class ApplicationDbContext : IdentityDbContext<
ApplicationUser, ApplicationRole, Guid,
IdentityUserClaim<Guid>, ApplicationUserRole, IdentityUserLogin<Guid>,
IdentityRoleClaim<Guid>, IdentityUserToken<Guid>>
{

最后,我必须在添加身份服务时注册自定义数据库上下文类(在我的Blazor项目中,在startup.cs下)。

services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultUI()
.AddDefaultTokenProviders();

这将解决您的问题:

我无法连接UserRoles到IdentityUser.:

我现在能够处理用户和他们的角色之间的关系,就像我处理与任何其他模型的关系一样(同时也利用UserManager和RoleManager)。例如,使用UserManager为用户分配角色:await UserManager.AddToRoleAsync(ApplicationUserObject, "admin");

相关内容

  • 没有找到相关文章

最新更新