Existe-t-il un moyen d'obtenir la liste des rôles d'un utilisateur authentifié Windows, sans vérifier explicitement par la méthode WindowsPrincipal.IsInRole
?Comment puis-je récupérer tous les rôles (groupes) dont un utilisateur est membre?
Répondre
WindowsPrincipal.IsInRole
vérifie simplement si l'utilisateur est un membre du groupe portant ce nom; un groupe Windows est un rôle. Vous pouvez obtenir la liste des groupes dont un utilisateur est membre depuis la propriété WindowsIdentity.Groups
.
Vous pouvez obtenir WindowsIdentity
de votre WindowsPrincipal
:
WindowsIdentity identity = WindowsPrincipal.Identity as WindowsIdentity;
ou vous pouvez l'obtenir à partir d'une méthode de fabrication sur WindowsIdentity:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsIdenity.Groups
est une collection de IdentityReference
qui vous donne juste le SID du groupe. Si vous avez besoin des noms de groupe, vous devrez traduire le IdentityReference
dans un NTAccount
et obtenir la valeur:
var groupNames = from id in identity.Groups
select id.Translate(typeof(NTAccount)).Value;
EDIT: Josh me battre pour elle! :)
Essayez cette
using System;
using System.Security.Principal;
namespace ConsoleApplication5
{
internal class Program
{
private static void Main(string[] args)
{
var identity = WindowsIdentity.GetCurrent();
foreach (var groupId in identity.Groups)
{
var group = groupId.Translate(typeof (NTAccount));
Console.WriteLine(group);
}
}
}
}
Si vous n'êtes pas connecté au serveur de domaine, la fonction Traduire peut lancer une exception « //The trust relationship between this workstation and the primary domain failed.
» Mais pour la plupart des groupes, ce sera OK, personellement J'utilise:
foreach(var s in WindowsIdentity.GetCurrent().Groups) {
try {
IdentityReference grp = s.Translate(typeof (NTAccount));
groups.Add(grp.Value);
}
catch(Exception) { }
}
Ceci est LA réponse. –
Dans un site ASP.NET MVC, vous pouvez le faire comme ceci:
Ajouter à votre web.config:
<system.web>
...
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />
...
</system.web>
Ensuite, vous pouvez utiliser Roles.GetRolesForUser()
pour obtenir tous les groupes Windows que l'utilisateur est membre. Assurez-vous d'être using System.Web.Security
.
- 1. Requête LDAP pour lister tous les groupes Utilisateur est un membre?
- 2. Comment obtenir des groupes dont un membre est membre dans ActiveDirectory en utilisant C#?
- 3. interrogation de ldap pour récupérer des groupes utilisateur est membre de (dans sharepoint)
- 4. Vues Drupal OG: ne peut pas créer de vue de tous les groupes dont je suis * pas * actuellement membre
- 5. Comment effectuer une requête dans django qui sélectionne tous les projets dont je suis membre?
- 6. Comment obtenir les rôles utilisateur dans Servlet?
- 7. Apache - autoriser un utilisateur dans plusieurs groupes
- 8. Rôles Fba avec des groupes d'utilisateurs SharePoint
- 9. AD via LDAP - Comment puis-je retourner tous les groupes d'ancêtres d'une requête?
- 10. Asp.net MVC - Comment puis-je obtenir des rôles utilisateur sans connaître ces rôles?
- 11. Comment gérer les rôles utilisateur de manière efficace?
- 12. Liste de tous les utilisateurs et groupes
- 13. DirectoryEntry.Invoke ("groups", null) ne récupère pas tous les groupes?
- 14. Comment faire la distinction entre les rôles utilisateur dans wordpress?
- 15. Comment obtenir des groupes d'utilisateurs AD pour utilisateur dans Asp.Net?
- 16. Récupérer les messages non lus, par utilisateur
- 17. Comment calculer par programme si un compte d'utilisateur est un membre d'un groupe particulier dans Windows?
- 18. Récupérer tous les cookies en Python
- 19. Comment exclure un certain membre d'un appel MDX qui obtient tous les descendants d'un membre à un niveau supérieur
- 20. Envisager de scrapper mon idée d'écrire un membre personnalisé et un fournisseur de rôles. Des avis?
- 21. Comment puis-je obtenir tous les résultats dont la date est différente de ma valeur?
- 22. Récupérer tous les hashtags d'un tweet
- 23. Linq Récupérer tous les contrôles (classés)
- 24. Récupérer tous les objets d'un contrôleur NSTree
- 25. Est-ce que le gestionnaire de rôles asp.net cache réellement les rôles pour un utilisateur dans un cookie si cela est configuré?
- 26. Trouver quels groupes/Listes de distribution un utilisateur spécifique appartient dans le répertoire actif
- 27. Mojo SDK récupérer tous les contacts
- 28. MOSS Tous les groupes n'affiche pas la pagination lorsque plus de 100 groupes sont retournés
- 29. Comment changer la façon dont un contrôle utilisateur est glissé et déposé dans le volet source
- 30. ASP.NET de Windows fournisseur de rôles (AspNetWindowsTokenRoleProvider) ne pas avoir remarqué un utilisateur ajouté à un nouveau groupe
J'ai utilisé 'var identity = User.Identity comme WindowsIdentity;' – Jaider