【发布时间】:2017-11-03 00:56:21
【问题描述】:
在我的项目中,我有一个有 2 个职位的用户,所以, 我在我的数据库的 AspNetUserRoles 表中添加了一个具有 2 个角色的用户,
例如,我的用户名为“email@something.com”有两个角色:“accountant”和“ExecutiveExpert”
但是当我调用 User.IsInRole("ExecutiveExpert") 函数时,它只检查第一个角色:accountant,而不是所有角色(accountant 和 ExecutiveExpert ) 并返回 false,
如何更改 asp.net 身份以检查所有用户角色?一般可以吗?
这些是我的桌子:
[AspNetUsers]:ID: c35721e2-05ef-4c32-8915-b4ad117c5a98
[AspNetRoles]:
Id Name
743f5c09-2b94-4da6-ab1c-9c9a6c9373b7 accountant
845efdf6-ab07-475c-9eb1-b14365b1a54c ExecutiveExpert
[AspNetUserRoles]:
userID RoleID
c35721e2-05ef-4c32-8915-b4ad117c5a98 743f5c09-2b94-4da6-ab1c-9c9a6c9373b7
c35721e2-05ef-4c32-8915-b4ad117c5a98 845efdf6-ab07-475c-9eb1-b14365b1a54c
【问题讨论】:
-
我不明白你在说什么。
User.IsInRole只会给你一个布尔值。如果它具有指定的角色,则为 true,否则为 false。 -
您需要将
string传递给IsInRole。见the docs -
@mason:我刚刚编辑了我的问题,请你再读一遍好吗?谢谢。
-
我还是不明白你在问什么。 IsInRole 一次只检查一个角色。如果你想检查两个,你会做类似
bool hasBothRoles = User.IsInRole("Role1") && User.IsInRole ("Role2");如果IsInrole报告一个角色的错误,那么你就会遇到一个完全不同的问题。 -
@mason:我的问题是这个用户没有 ExecutiveExpert 角色,但我在数据库中为他添加了这个角色:在 AspNetUserRoles 表中,它有 会计师和ExecutiveExpert角色
标签: c# asp.net-mvc asp.net-identity role-base-authorization