大佬教程收集整理的这篇文章主要介绍了.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();
}
}
以上是大佬教程为你收集整理的.NET Core 2.1身份使所有用户具有其关联的角色全部内容,希望文章能够帮你解决.NET Core 2.1身份使所有用户具有其关联的角色所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。