访问控制列表是保证用户用不同权限去使用CKFinder来操作文件夹或文件。可以在config.xml中加以配置。 访问控制列表的基本语法如下:
<accessControls>
<accessControl>
<role>*</role>
<resourceType>*</resourceType>
<folder>/</folder>
<folderView>true</folderView>
<folderCreate>true</folderCreate>
<folderRename>true</folderRename>
<folderDelete>true</folderDelete>
<fileView>true</fileView>
<fileUpload>true</fileUpload>
<fileRename>true</fileRename>
<fileDelete>true</fileDelete>
</accessControl>
</accessControls>
role: 设置用户的类型。默认的*表示所有人。用户类型的名字和他能使用的功能直接相关。
resourceType: 定义被CKFinder操作的资源。它只不过是在不同路径下组织文件的方法,每个有不同的设置(如 Images, Flash, Files),默认是*,表示接受任意类型。
folder: 决定约束使用的位置。通过声明文件夹名,你可指定你想增加约束的位置。默认是/ ,表示没有文件夹设置了约束。
folder* 和 file* 选项:设置布尔值来指定创建文件、删除、重命名等属性。
可以定义很多ACL(access control list)。每个属性都是可选的。子文件夹会继承父文件夹的相关属性。
几个例子:
1. 为文件夹操作约束为Image类型资源。
<resourceType>Images</resourceType>
2. 使用 Session
userRoleSessionVar是个会话变量名,CKFinder用它来取回当前角色名。
<userRoleSessionVar>CKFinder_UserRole</userRoleSessionVar>
为在不同用户间进行切换,只需改变session的值。
HttpSession session = request.getSession(true);
session.setAttribute("CKFinder_UserRole", "admin");
3. 其他用户
<accessControl>
<role>registered</role>
<resourceType>*</resourceType>
<folder>/</folder>
<folderView>true</folderView>
<folderCreate>true</folderCreate>
<folderRename>false</folderRename>
<folderDelete>false</folderDelete>
<fileView>true</fileView>
<fileUpload>true</fileUpload>
<fileRename>false</fileRename>
<fileDelete>false</fileDelete>
</accessControl>
上述用户只能查看、创建、上传。
<accessControl>
<role>admin</role>
<resourceType>*</resourceType>
<folder>/</folder>
<folderView>true</folderView>
<folderCreate>true</folderCreate>
<folderRename>true</folderRename>
<folderDelete>true</folderDelete>
<fileView>true</fileView>
<fileUpload>true</fileUpload>
<fileRename>true</fileRename>
<fileDelete>true</fileDelete>
</accessControl>
上述用户有所有权限。
你可使用 2中提到的知识进行切换。