gpt4 book ai didi

c# - 如何使用 IdentityUserRoles?

转载 作者:行者123 更新时间:2023-12-04 07:19:52 25 4
gpt4 key购买 nike

我是 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>

任何帮助表示赞赏 - 非常感谢!

最佳答案

在我的 ASP.NET 5.0 Blazor 服务器项目中,使用 EF Core,我遵循了 Identity Model Customisation 中的指南最初创建为自定义 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();
这将解决您的问题:

I'm not able to connect UserRoles to IdentityUser.:


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

关于c# - 如何使用 IdentityUserRoles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68572522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com