2017-06-01 49 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); 

這將有助於解決您的問題。

相關問題