【发布时间】:2018-01-22 07:51:55
【问题描述】:
使用 ASP.NET Core 身份,我使用UserManager.CreateAsync() 创建一个新用户,并将他们分配给使用UserManager.AddToRoleAsync 的现有角色。这是可行的,因为用户和角色之间的关系存储在数据库的AspNetUserRoles 表中。
但是当我使用 UserManager(例如UserManager.FindByMail() 方法)获取用户时,Role 列表为空。我还尝试了 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 没有更好的方法来获取这些数据......
【问题讨论】:
-
不要在标题中强行添加标签!
标签: asp.net-core asp.net-identity asp.net-core-mvc asp.net-core-1.0