程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.NET Core 2.1身份使所有用户具有其关联的角色大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决.NET Core 2.1身份使所有用户具有其关联的角色?

开发过程中遇到.NET Core 2.1身份使所有用户具有其关联的角色的问题如何解决?下面主要结合日常开发的经验,给出你关于.NET Core 2.1身份使所有用户具有其关联的角色的解决方法建议,希望对你解决.NET Core 2.1身份使所有用户具有其关联的角色有所启发或帮助;

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

正如CodeNotFound在注释中指出的那样,IDentityUser曾经具有一个Roles属性。.NET Core中不再是这种情况。GitHub上的此注释/问题似乎是.Net Core的当前解决方案。我试图用以下代码实现它:

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

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

IDentityUserRole<GuID>不是字符串的固有特性您可能还需要删除R_803_11845@odelBuilder中的代码才能使迁移正常进行

解决方法

我正在尝试为用户管理管理员页面提取所有我的Identity用户及其相关角色。我认为这将相当容易,但显然并非如此。我已经尝试按照以下解决方案进行操作:https
:
//stackoverflow.com/a/43562544/5392786,但到目前为止尚未解决。

这是我到目前为止的内容:

应用用户:

public class ApplicationUser : IdentityUser
{
    public List<IdentityUserRole<String>> Roles { get; set; }
}

数据库上下文

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

启动身份码

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

我要在其中显示列表的剃须刀页面:

public class IndexModel : PageModel
{
    private readonly UseRMANager<ApplicationUser> useRMANager;

    public IndexModel(UseRMANager<ApplicationUser> useRMANager)
    {
        thiS.UseRMANager = useRMANager;
    }

    public IEnumerable<ApplicationUser> Users { get; set; }

    public void OnGetAsync()
    {
        thiS.Users = useRMANager.Users.Include(u => u.Roles).ToList();
    }
}

致电时出现以下错误useRMANager.Users.Include(u => u.Roles).ToList();

大佬总结

以上是大佬教程为你收集整理的.NET Core 2.1身份使所有用户具有其关联的角色全部内容,希望文章能够帮你解决.NET Core 2.1身份使所有用户具有其关联的角色所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。