2017-06-01 76 views
0

在我的项目一个用户的多个角色,我有2位用户,所以, 我加了用户与AspNetUserRoles表2级的角色在我的数据库,在ASPNET身份

如此,例如,我使用该用户名的用户:“[email protected]”有2个角色:“会计师”和“ExecutiveExpert

,但是当我打电话User.IsInRole("ExecutiveExpert")功能,它只是检查的第一个角色:会计师,不是所有的角色(会计师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 
+0

我不明白你在说什么。 'User.IsInRole'只会给你一个布尔值。如果它具有指定的角色,则会变为true,否则为false。 – mason

+0

您需要将'string'传递给'IsInRole'。请参阅[文档](https://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole(v = vs.110).aspx) –

+0

@mason:我只是编辑我的问题,请你再读一遍吗?谢谢。 –

回答

1

在这种情况下,安全标记进行更新。您需要特别更新/重置安全戳

UserManager.UpdateSecurityStampAsync(userId); 

这将有助于解决您的问题。