asp.net-core – 获取具有指定角色的用户
|
使用ASP.NET Core身份,我使用UserManager.CreateAsync()创建一个新用户,并使用UserManager.AddToRoleAsync将它们分配给现有角色.这是有效的,因为用户和角色之间的实现存储在数据库的AspNetUserRoles表中. 但是当我使用UserManager(例如UserManager.FindByMail()方法)获取用户时,角色列表为空.我也尝试过EF的Include功能: var user = userManager.Users.Include(u => u.Roles).FirstOrDefault(u => u.Email == "test@test.de"); 这给了我n:m关联表的ID,因为我需要角色名称,所以它不是很有用.也不可能使用第二个查询加载它们,因为身份用户的Roles属性是只读的.我希望得到一个List< string>角色名称.找不到任何关于此的信息. 对我来说,唯一的解决方法似乎是向我的用户添加一个自定义属性,并用数据填充它们,我使用第二个查询获取数据.但那不是一个好的解决方案.不能相信ASP.NET Core Identity没有更好的方法来获取这些数据…… 解决方法默认情况下,UserManager不会加载关系.手动包含是一种很好的方法,但如here所述 – EntityFramework Core尚不支持直接M:N关系. 所以我看到两种方式: (优先的)使用 userManager.GetRolesAsync(user); 这将返回List< string>使用用户的角色名称.或者使用一些EF查询通过加入IdentityUserRole获取IdentityRole对象.不幸的是,这需要接受事实,角色不会直接在用户实体中. 或者你可以实现自定义IdentityUserRole,在那里创建与IdentityRole的关系,然后用`查询它 Include(user => user.Roles).ThenInclude(role => role.Role) 例如,如何实现自己的身份实体. here.但它是复杂的方法,而且Role对象将嵌套在绑定实体中. 但是,您可以在ApplicationUser中声明属性: [NotMapped]
public List<string> RoleNames {get; set;}
并自由地使用它… (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 首先通过NuGet尝试StructureMap和MVC3
- asp.net – 如何在Json中使用Gson将对象类型包含在asmx web
- 在ASP.Net MVC和IIS 7.5中设置最佳http缓存头和服务器参数
- 加速ASP.Net网站或应用程序
- asp.net-core – VS2017:目标框架下拉列表未显示.NET Core
- asp.net-mvc – Donut hole缓存 – 排除MiniProfiler.Rende
- 如何在ASP.NET 2.0应用程序中为API调用启用TLS 1.2?
- asp.net – 在部分视图中强制使用没有Html.BeginForm / Aja
- asp.net – 如何让Html.RenderAction在帖子上调用Get方法?
- iis-7.5 – ASP.NET Web API仅在某些服务器上返回404 PUT
- asp.net – Handles子句需要在包含类型或其基类型
- asp.net – 如果Ninject尚未绑定,如何在Ninject中
- asp.net – NHibernate – ManagedWebSessionCon
- ASP.net检查页面是http还是https
- asp.net – ‘WebForm_DoPostBackWithOptions’在
- asp.net-mvc – 如何在MVC视图中构造if语句
- asp.net-mvc – ASP.NET MVC 2 on mono
- ASP.NET表单身份验证 – 在调试时使用测试帐户自
- asp.net – Azure上的联合身份验证
- 将ASP.NET编译为64位
