从版本2.0开始,角色是可选的,这是一个非常好的主意,但是实现起来很混乱。 我不知道为什么像User.Roles和Roles.Claims这样的属性被删除了(现在我必须手动添加它,并且很多方法也被删除了......)到现在我太害怕了,但是这个自从创建ASP.NET身份以来,甚至在.NET Core之前,谁对这些属性进行了改编是非常糟糕的。
在此投诉之后,让我们继续问题。
我有一个可能有一个或多个角色的用户(IdentityUser)(IdentityRole)。角色可能有一个或多个主张。
我有一个表单,我可以通过他们的姓名,电子邮件,角色和声明来搜索用户。 字段名称和电子邮件是一个简单的输入。字段角色和声明是多个选择。
<input id="name" type="text" placeholder="Name">
<input id="email" type="text" placeholder="Email">
<select multiple id="select-role">
<option>Choose one or more roles</option>
<option>Admin</option>
<option>Manager</option>
<option>User</option>
</select>
<select multiple id="select-claim">
<option>Choose one or more claims</option>
<option>Can write users</option>
<option>Can read users</option>
<option>Can delete users</option>
<option>Can write customers</option>
<option>Can read customers</option>
<option>Can delete customers</option>
</select>
要求:
搜索示例及其所需结果:
My data:
Users | Roles | Claims
John | {A, B, C} | {{A1,A2,A3}, {B2,B3}, {C3}}
Mary | {B, C} | {{B2,B3}, {C3}}
Joseph | {C} | {{C3}}
搜索具有角色A和B的用户。 结果必须是约翰和玛丽。
搜索具有角色A的用户。 结果必须只是约翰。
搜索具有角色C和声明1的用户。 结果必须但没有。
搜索具有角色A和B以及声明1和2的用户。 结果必须但只有约翰。
考虑到我从DB获得了这些列表:
如何根据我的要求在这些列表中搜索内存?
------更新------
我的ApplicationUser类:
public class ApplicationUser : IdentityUser
{
public string Name { get; set; }
public string Status { get; set; }
}