栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

.NET Core 2.1身份使所有用户具有其关联的角色

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.NET Core 2.1身份使所有用户具有其关联的角色

我现在已经实现了以下解决方案。

正如CodeNotFound在注释中指出的那样,IdentityUser曾经具有一个

Roles
属性。.NET
Core中不再是这种情况。GitHub上的此注释/问题似乎是.Net
Core的当前解决方案。我试图用以下代码实现它:

应用用户

public class ApplicationUser : IdentityUser{    public ICollection<ApplicationUserRole> UserRoles { get; set; }}

ApplicationUserRole

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

应用角色

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

数据库上下文

public class ApplicationDbContext    : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserClaim<string>,    ApplicationUserRole, IdentityUserLogin<string>,    IdentityRoleClaim<string>, IdentityUserToken<string>>{    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)        : base(options)    {    }    protected override void onModelCreating(ModelBuilder builder)    {        base.onModelCreating(builder);        builder.Entity<ApplicationUserRole>(userRole =>        { userRole.HasKey(ur => new { ur.UserId, ur.RoleId }); userRole.HasOne(ur => ur.Role)     .WithMany(r => r.UserRoles)     .HasForeignKey(ur => ur.RoleId)     .IsRequired(); userRole.HasOne(ur => ur.User)     .WithMany(r => r.UserRoles)     .HasForeignKey(ur => ur.UserId)     .IsRequired();        });    }}

启动

services.AddIdentity<ApplicationUser, ApplicationRole>(options => options.Stores.MaxLengthForKeys = 128) .AddEntityframeworkStores<ApplicationDbContext>() .AddDefaultTokenProviders();

最后,请确保在使用它时先加载用户的UserRoles,然后再加载UserRole的Role,如下所示:

this.Users = userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();

我有一个问题,其中

Role
每个属性
UserRole
均为null,并通过添加
.ThenInclude(ur => ur.Role)
零件来解决。

关于多级紧急加载的Microsoft文档:https :
//docs.microsoft.com/zh-cn/ef/core/querying/related-data#includes-multiple-
levels

ASP Core 2.2更新

IdentityUserRole<Guid>
不是字符串的固有特性您可能还需要删除ModelBuilder中的代码才能使迁移正常进行。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号