2010-06-23 8 views
0

J'ai une application de formulaire Windows que les utilisateurs peuvent se connecter. L'application est seule et ne se connecte à rien ou à personne.Quel est le meilleur moyen d'obtenir la valeur de quel utilisateur est connecté?

En plus de créer une variable globale, comment pourrais-je avoir une variable facilement accessible pour vérifier les permissions des utilisateurs?

Une façon pas si kosher de faire les choses est juste de passer l'ID du userType dans le constructeur de formulaire et selon cela, .Enable = false; boutons qu'ils n'ont pas les permissions d'utiliser.

Merci!

Répondre

3

Si vous voulez que l'ID de l'utilisateur connecté de Windows (l'utilisateur que l'application est en cours d'exécution comme.), Il y a deux façons de l'obtenir:

  1. En mettant AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); dans votre démarrage, vous pouvez utiliser Thread.CurrentPrincipal pour obtenir le principe de sécurité de l'utilisateur.
  2. Vous pouvez utiliser WindowsIdentity.GetCurrent() pour obtenir l'identité de l'utilisateur actuel. Vous pouvez ensuite créer un principal de sécurité à l'aide de new WindowsPrincipal(identity).

ces deux sont équivalents, et vous obtiendrez un security principal qui a une méthode IsInRole qui peut être utilisé pour vérifier les autorisations.

0

Utilisez la classe WindowsIdentity pour obtenir l'identité des utilisateurs, sous System.Security.Principal.WindowsIdentity.

WindowsIdentity current = WindowsIdentity.GetCurrent(); 
Console.WriteLine("Name:" + current.Name); 

Utilisez la classe WindowsPrincipal pour obtenir les utilisateurs, les rôles trouvés sous System.Security.Principal.WindowsPrincipal.

WindowsIdentity current = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(current); 

if (principal.IsInRole("your_role_here") 
{ 
Console.WriteLine("Is a member of your role"); 
} 
Questions connexes