2008-09-17 10 views

Répondre

4

Pour WinForms, utiliser System.Threading.Thread.CurrentPrincipal avec la méthode IsInRole() pour vérifier quels groupes ils sont membre de. Vous devez d'abord définir la stratégie principale de l'AppDomain sur WindowsPrincipal.

Utilisez cette option pour obtenir le nom de l'utilisateur actuel:

private string getWindowsUsername() 
     { 
      AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 
      return Thread.CurrentPrincipal.Identity.Name; 
     } 

Et puis quelque chose comme ceci pour vérifier un rôle:

if (Thread.CurrentPrincipal.IsInRole("Domain Users") == true) 
{} 

Dans ASP.NET, le thread appartiendra à IIS, donc Au lieu de cela, vous devez

  1. Définir le dossier virtuel ou le site Web pour exiger une authentification
  2. Obtenir le nom d'utilisateur fourni par le navigateur avec Request.ServerVariables (« LOGON_USER »)
  3. Utilisez la classe DirectorySearcher pour trouver les groupes d'utilisateurs
1

En supposant que cela est servi par IIS, je dirais IIS pour authentifier via le domaine, mais je garderais auteur isation (quels rôles sont associés à un utilisateur, fonctionnalité accessible, etc.) dans l'application elle-même.

Vous pouvez retreive le nom d'utilisateur utilisé pour l'authentification via

Trim(Request.ServerVariables("LOGON_USER")).Replace("/", "\").Replace("'", "''") 

OU

CStr(Session("User")).Substring(CStr(Session("User")).LastIndexOf("\") + 1) 
Questions connexes