jeesite自定義ckfinder2.x以實現動態權限控制

以前重作項目中遇到,以前忙沒功夫整理,如今補充下記錄,爲了簡單起見,只點出思路跟關鍵點。html

需求:在項目管理裏某些模塊是有文件上傳功能的,並且還要跟項目權限,以及審批流程結合起來,以達到,某些人只有受權後才能查看指定文件夾內容,某個項目的某個模塊在項目在流程的某些階段是不能上傳東西的。web

之前系統裏是本身寫的模塊,我打算拿jeesite自帶的ckfinder來實現,項目裏帶的是2.3,理論上2.6都支持。可是在網上搜了不少資料,都只是簡單應用,不能實現api

首先觀察默認結構,前臺是一個ckfinder.html,裏面收集了一些地址欄參數,合併到配置裏,並建立了實例。觀察了下參數,沒什麼想要的。 ckfinder.xml:配置文件,其中types是載入的文件夾。CKFinderConfig 這是重點,配置文件裏接受的配置只是默認配置,是不可變的,一旦載入後就沒用了。要想動態修改權限,只能在這個類裏作權限控制,那麼如何從前臺傳入合適的參數呢。直接加在ckfiner.html後顯然是不行的,根據web.xml裏的配置可知,必須傳給配置專用的servlet裏才行,這個操做顯然是由ckfinder的js本身完成的,因而去查官方文檔,能夠看到jsp

 

按照文檔的方式,把項目id與模塊id在地址欄拼好,傳入後臺,在config裏初始化權限前作好相關判斷便可。設計

那麼如何只顯示指定type呢,能夠看到基類裏有types變量,正是與配置文件裏相對應,並且是protected類型,子類只要從新覆蓋便可。通過試驗,僅覆蓋types這個map還不夠,會報錯,還必須同時修改好typeOrder。xml

另外關於baseURL 跟baseDir,由於資料比較多,在此不贅述了。htm

最終效果如圖:其中ckfinder是內嵌的iframe,審批等功能在外面的jsp實現。項目管理

==================文檔

4.28再補充下關於路徑的問題,以前沒提,可是我設計的時候考慮到了,按照jeesite原有設計,是寫了一個UserfilesDoloadServlet,我由於要作項目的,目錄是隔離的,因此仿照他的樣子寫了一個同樣的東西,可是發現這些預覽都是不經控制的,也就是說拿到地址能夠直接訪問。不登陸的用戶固然猜不到地址,可是若是登陸的用戶是能夠根據文件名跟模塊名,項目ID,猜到其餘項目文件真實訪問地址的,最近在看的圖解HTTP中也提到這種,叫強制瀏覽bug(Force browsing),個人解決辦法是在項目路徑後加一個隨機字符串,使得其餘項目的文件沒法經過路徑猜想瀏覽。固然也有更嚴厲的方法,可是感受在這個項目裏沒有必要。字符串

相關文章
相關標籤/搜索