博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jeesite自定义ckfinder2.x以实现动态权限控制
阅读量:6674 次
发布时间:2019-06-25

本文共 1143 字,大约阅读时间需要 3 分钟。

hot3.png

之前重做项目中遇到,之前忙没功夫整理,现在补充下记录,为了简单起见,只点出思路跟关键点。

需求:在项目管理里某些模块是有文件上传功能的,而且还要跟项目权限,以及审批流程结合起来,以达到,某些人只有授权后才能查看指定文件夹内容,某个项目的某个模块在项目在流程的某些阶段是不能上传东西的。

以前系统里是自己写的模块,我打算拿jeesite自带的ckfinder来实现,项目里带的是2.3,理论上2.6都支持。但是在网上搜了很多资料,都只是简单应用,不能实现

首先观察默认结构,前台是一个ckfinder.html,里面收集了一些地址栏参数,合并到配置里,并创建了实例。观察了下参数,没什么想要的。 ckfinder.xml:配置文件,其中types是载入的文件夹。CKFinderConfig 这是重点,配置文件里接受的配置只是默认配置,是不可变的,一旦载入后就没用了。要想动态修改权限,只能在这个类里做权限控制,那么如何从前台传入合适的参数呢。直接加在ckfiner.html后显然是不行的,根据web.xml里的配置可知,必须传给配置专用的servlet里才行,这个操作显然是由ckfinder的js自己完成的,于是去查,可以看到

 233953_dEL4_2351812.png

按照文档的方式,把项目id与模块id在地址栏拼好,传入后台,在config里初始化权限前做好相关判断即可。

那么如何只显示指定type呢,可以看到基类里有types变量,正是与配置文件里相对应,而且是protected类型,子类只要重新覆盖即可。经过试验,仅覆盖types这个map还不够,会报错,还必须同时修改好typeOrder。

另外关于baseURL 跟baseDir,因为资料比较多,在此不赘述了。

最终效果如图:其中ckfinder是内嵌的iframe,审批等功能在外面的jsp实现。

234931_ntsv_2351812.png

==================

4.28再补充下关于路径的问题,之前没提,但是我设计的时候考虑到了,按照jeesite原有设计,是写了一个UserfilesDoloadServlet,我因为要做项目的,目录是隔离的,所以仿照他的样子写了一个一样的东西,但是发现这些预览都是不经控制的,也就是说拿到地址可以直接访问。不登录的用户当然猜不到地址,但是如果登录的用户是可以根据文件名跟模块名,项目ID,猜到其他项目文件真实访问地址的,最近在看的图解HTTP中也提到这种,叫强制浏览bug(Force browsing),我的解决办法是在项目路径后加一个随机字符串,使得其他项目的文件无法通过路径猜测浏览。当然也有更严厉的方法,但是感觉在这个项目里没有必要。

转载于:https://my.oschina.net/u/2351812/blog/1797559

你可能感兴趣的文章
Default Constructor 的建构操作
查看>>
函数中的不定长参数研究 *and**
查看>>
hive如何执行mr
查看>>
马士兵hadoop2.7.3_yarn笔记
查看>>
python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取
查看>>
Extjs5项目进行中:打开新面板并加载数据(三)
查看>>
2012年8月14日 星期二 equals()方法 (冲突备份)
查看>>
20本最好的Linux免费书籍-转
查看>>
敏捷开发的艺术---第一章
查看>>
jQUery事件
查看>>
测试及等等
查看>>
JAVACard 基本数据类型的运算及溢出问题
查看>>
通过Python来操作kylin
查看>>
代码逻辑题之继承-静态代码块-main方法执行顺序
查看>>
c# 判断文件是否发生了变化
查看>>
Remove menucool tooltip trial version
查看>>
模板 数据结构
查看>>
【Search a 2D Matrix】cpp
查看>>
POJ 1741 Tree(树的点分治,入门题)
查看>>
Opencv3.1.0 & Win10/Win7 64位 contrib编译
查看>>