我在ASP.NET身份框架中成功创建了自定义用户和角色,但是缺少一个部分是对用户中"角色"集合的支持。我在userrole中添加了一个逻辑上的"删除"标志,我希望在EF从数据库中检索信息时将其包含在内,但是它所做的只是检索所有内容(这不是我想要的)。Senario:
- 用户A具有" admin"(未删除) 的角色
- 然后,我添加了"超级应用"的角色,然后删除'admin'
- 如果然后访问我的IdentityUser版本(具有"角色" Icollection-自定义类型),我仍然会看到两个角色(1个删除,1个不)
我想发生的事情是在登录中(使用各个部分覆盖各个部分的默认函数),当EF检索数据应该知道的数据排除任何被标记为已删除的行,但是我找不到任何方法这样做。因为所有的样板代码都被锁定,所以我无法轻易看到正在发生的事情或找到覆盖此功能的任何逻辑位置。
任何人都可以帮忙吗?
您可以在登录后扫描角色,然后用与此类似的代码删除它们:
var roles = UserManager.GetRoles(userId);
foreach (var roleName in roles)
{
var role = RoleManager.FindByName(roleName);
if (role.IsDeleted) UserManager.RemoveFromRole(userId, roleName);
}