2010-05-03 10 views
0

si quelqu'un pouvait aider avec s'il vous plaît. J'essaye d'incorporer ckeditor et ckfinder à un projet de Asp.Net Mvc 1. Jusqu'à présent, tout fonctionne bien. La seule chose que je ne peux pas faire fonctionner est le contrôle d'accès pour ckfinder. Pour ce que je comprends, dans le fichier ckfinder/config.ascx, la variable variable RoleSessionVar est utilisée pour affecter le rôle à restreindre. La valeur par défaut est:ckfinder ne reconnaîtra pas le rôle?

RoleSessionVar = "CKFinder_UserRole"; 

J'ai des rôles d'arborescence dans mon projet Administrateurs, éditeurs et contributeurs. Ainsi, afin d'obtenir mon rôle d'utilisateur actuel, je remplacerai pour:

string currentRole= ""; 

    if(HttpContext.Current.User.IsInRole("Administrators")) 
    { 
     currentRole = "Administrators"; 
} 
    else 
    { 
     if (HttpContext.Current.User.IsInRole("Editors")) 
      currentRole = "Editors"; 
     else 
     { 
      if (HttpContext.Current.User.IsInRole("Contributors")) 
      { 
       currentRole = "Contributors"; 
      } 
     } 
    } 


    RoleSessionVar = currentRole; 

La variable se voit assigner le rôle correct pour l'utilisateur actuel. La partie suivante du fichier config.ascx sont les paramètres ACL. La valeur par défaut est:

AccessControl acl = AccessControl.Add(); 
    acl.Role = "*"; 

acl.ResourceType = "*"; acl.Folder = "/";

acl.FolderView = true; 
    acl.FolderCreate = true; 
    acl.FolderRename = true; 
    acl.FolderDelete = true; 

    acl.FileView = true; 
    acl.FileUpload = true; 
    acl.FileRename = true; 
    acl.FileDelete = true; 

Avec ces paramètres, il n'y a pas de problèmes que le CKFinder, il répertorie tous les dossiers et fichiers, mais avec toutes les autorisations pour tout le monde. Je souhaite restreindre la suppression des autorisations aux différents rôles. Quoi qu'il en soit comme un test j'ai essayé de donner les autorisations au rôle des administrateurs

AccessControl acl = AccessControl.Add(); 
    acl.Role = "Administrators"; 

acl.ResourceType = « * »; acl.Folder = "/";

acl.FolderView = true; 
    acl.FolderCreate = true; 
    acl.FolderRename = true; 
    acl.FolderDelete = true; 

    acl.FileView = true; 
    acl.FileUpload = true; 
    acl.FileRename = true; 
    acl.FileDelete = true; 

Mais CKFinder ne sera pas affiché un dossier ou un fichier même si RoleSessionVar = « Administrateurs ».

Je serai très reconnaissant pour toute lumière à la solution de ce problème.

Byron

Répondre

1

Vous devez faire

session [ "RoleSessionVar"] = currentRole;

0

vous devriez essayer:

session [ "CKFinder_UserRole"] = currentRole;

Questions connexes