0

dans mon projet, j'ai un utilisateur avec 2 positions, donc, j'ai ajouté un utilisateur avec 2 rôles dans le tableau AspNetUserRoles dans ma base de données,plusieurs rôles pour un utilisateur dans l'identité aspnet

ainsi, par exemple, mon utilisateur avec ce nom d'utilisateur: « [email protected] » a 2 rôles: « comptable » et « ExecutiveExpert »

mais quand je l'appelle User.IsInRole("ExecutiveExpert") fonction, il suffit de vérifier le premier rôle: comptable, pas tous les rôles (comptable et ExecutiveExpert) et il renvoie false,

comment puis-je modifier l'identité asp.net pour vérifier tous les rôles d'utilisateur? Est-ce possible en général?

ce sont mes tables:

[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

Je ne comprends pas ce que vous dites. 'User.IsInRole' vous donnera juste un booléen. S'il a le rôle spécifié, vous obtiendrez vrai, sinon faux. – mason

+0

Vous devez passer une 'chaîne' à' IsInRole'. Voir [les docs] (https://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole (v = vs.110) .aspx) –

+0

@mason: Je viens de modifier ma question , pourriez-vous s'il vous plait le relire? Je vous remercie. –

Répondre

1

Dans ce cas, le timbre de sécurité est mis à jour. Vous devez spécifiquement renouveler/réinitialiser le timbre de sécurité

UserManager.UpdateSecurityStampAsync(userId); 

Ceci aidera à résoudre le problème.