如何在DotNetNuke中以编程方式创建文件夹并为其分配权限?

时间:2011-02-07 23:52:12

标签: c# asp.net vb.net dotnetnuke

我在根门户目录上以编程方式在DotNetNuke中创建了一个文件夹。 我只想将权限分配给它一次,例如我想让它只对经过身份验证的用户进行读取。有关如何使用C#或VB.NEt完成此任务的建议吗?

谢谢。

2 个答案:

答案 0 :(得分:4)

这是相当复杂和令人费解的:

var folderController = new FolderController();
var folderId =
    folderController.AddFolder(
        new FolderInfo(
            portalId, 
            folderName, 
            (int)FolderController.StorageLocationTypes.InsecureFileSystem,
            isProtected: false, 
            isCached: false, 
            lastUpdated: Null.NullDate));
var folder = folderController.GetFolderInfo(portalId, folderId);
Directory.CreateDirectory(folder.PhysicalPath);

var permissionController = new PermissionController();
var writePermission = permissionController.GetPermissionByCodeAndKey("SYSTEM_FOLDER", "WRITE").Cast<PermissionInfo>().Single();
var registeredUserRole = new RoleController().GetRoleByName(folder.PortalID, "Registered Users");
folder.FolderPermissions.Add(new FolderPermissionInfo
    {
        FolderID = folder.FolderID,
        PermissionID = writePermission.PermissionID,
        RoleID = registeredUserRole.RoleID,
        UserID = Null.NullInteger,
        PermissionKey = writePermission.PermissionKey,
        AllowAccess = false
    });

答案 1 :(得分:0)

以下代码未将我的权限添加到数据库中。

folder.FolderPermissions.Add(new FolderPermissionInfo
{
    FolderID = folder.FolderID,
    PermissionID = writePermission.PermissionID,
    RoleID = registeredUserRole.RoleID,
    UserID = Null.NullInteger,
    PermissionKey = writePermission.PermissionKey,
    AllowAccess = false
});

我不得不使用:

 FolderManager.Instance.SetFolderPermission(folder, 6, registeredUserRole.RoleID);
  • folder = FolderInfo
  • 6 =权限id,在这种情况下写(这也将添加 权限:查看/浏览)。
  • registeredUserRole.RoleID =您要为该文件夹指定的角色 权限。