Bonjour,

J'ai une application avec un membership provider pour authentifier les utilisateurs se loggant à l'application.

J'aimerais savoir comment je peux vérifier si l'utilisateur courant à les droits d'accéder à un fichier ou un répertoire donné.

Sur internet je trouve un tas de code pas vraiment concluant. Existe-t'il une méthode qui se charge de voir si un utilisateur à accès ou non à un fichier/répertoire ?



Le seul code que j'ai trouvé et semble ok est celui-ci. Mais ce code ne gère pas les groupes ( ce qui est primordial) et me semble bien long et compliqué pour ce que je veux .


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 string pathtmp = @"c:\test";
            string NtAccountName = @"LBI\ancu";
 
 
            DirectoryInfo di = new DirectoryInfo(pathtmp);
            System.Security.AccessControl.DirectorySecurity acl = di.GetAccessControl(System.Security.AccessControl.AccessControlSections.All);
            System.Security.AccessControl.AuthorizationRuleCollection rules = acl.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
 
            //Go through the rules returned from the DirectorySecurity
            foreach (AuthorizationRule rule in rules)
            {
                //If we find one that matches the identity we are looking for
                if (rule.IdentityReference.Value.Equals(NtAccountName, StringComparison.CurrentCultureIgnoreCase))
                {
                    //Cast to a FileSystemAccessRule to check for access rights
                    if ((((FileSystemAccessRule)rule).FileSystemRights & FileSystemRights.WriteData) > 0)
                    {
                        Console.WriteLine(string.Format("{0} has write access to {1}", NtAccountName, pathtmp));
                   }
                    else
                    {
                        Console.WriteLine(string.Format("{0} does not have write access to {1}", NtAccountName, pathtmp));
                    }
                } 
            }

AsPrO,
Merci :-)