Bon, ici il va. Ma compréhension de votre problème est que vous voulez vérifier si l'utilisateur a un ou plusieurs rôles spécifiques. Si oui, autorisez l'accès; sinon, leur refuser l'accès et les envoyer dans un trou noir. Dans votre exemple, il semble que vous souhaitiez uniquement vérifier un rôle spécifique. En lisant certains de vos commentaires, vous pouvez également vérifier plusieurs rôles à un moment donné. L'exemple de code que je vais vous montrer vous permet de vérifier un utilisateur par rapport à un ensemble d'un ou plusieurs rôles auxquels l'utilisateur doit être affecté pour accéder à la page.
string[] requiredRoles = new string[] { "Awesome", "Pancake" };
if (requiredRoles.Except(theUsersAssignedRoles).Any())
{
// Authorization has failed!
// The user is not awesome and they are not a pancake.
}
else
{
// User is awesome and a pancake so let them through.
}
L'idée ici est de prendre une liste de tous les rôles nécessaires et soustrayez tous les rôles que l'utilisateur a assigné à lui. S'il reste des rôles dans la liste après la soustraction, l'utilisateur ne dispose pas de tous les rôles requis. Voici quelques exemples. Les rôles requis pour l'autorisation se trouvent à gauche du signe de soustraction alors que les rôles attribués à l'utilisateur se trouvent à droite du signe de soustraction, tout comme le code ci-dessus.
L'utilisateur est génial et une crêpe afin qu'ils soient autorisés à accéder. Remarquez que nous finissons avec un ensemble vide qui signifie que l'utilisateur répond aux exigences:
{ "Awesome", "Pancake" } - { "Awesome", "Pancake" } = { }
L'utilisateur est seulement une crêpe. Ils ne sont pas autorisés à accéder. L'ensemble résultant contient rôle « Impressionnant » ce qui signifie qu'ils manquent le « Impressionnant »:
{ "Awesome", "Pancake" } - { "Pancake" } = { "Awesome" }
Cet utilisateur est génial ou pas une crêpe mais elle est un administrateur. Pourtant, nous avons besoin des crêpes impressionnants pour entrer dans la page afin que cet utilisateur est refusé l'accès:
{ "Awesome", "Pancake" } - { "Admin" } = { "Awesome", "Pancake" }
Si vous avez des questions ou ce n'est pas ce que vous voulez, s'il vous plaît laisser un commentaire. Je serai heureux de vous aider plus loin si nécessaire.
Rôles.GetRolesForUser (x.UserName) - Quel type renvoie-t-il? – Sruti
'string []' Désolé d'avoir oublié de le mentionner. – rexdefuror
Il ressemble à une erreur de compilation, Contient sur un tableau ne prend pas un tableau comme paramètre! – Sruti