關於許可權設計的輕量級實現
在各種各樣的系統中,許可權設計是必不可少的,現在基本基於角色的思想,即乙個使用者屬於某個角色當然也可能屬於多個角色,然後根據角色來確實相應的許可權,以進一步驗證其合法性,最後才執行操作.很多人可能在使用者進入系統的某模組之前就進行許可權驗證,後來知道,微軟的sps並不是這樣的,所有的使用者都可進行操作,比如你提交乙個審批的時候才去驗證,來告訴你,你是否成功提交,我覺得這樣做有優勢,一速度快,使用者一進入系統不需要驗證,當然給使用者的體驗不太好.下面參考了乙個文篇,自己的再整理一下,主要是資料庫的設計,下面就是資料庫圖,用pd設計的
其實我把圖貼出來後,大家一看就非常清楚了,為了簡要說明,我並沒有給表加多餘的字段,比如使用者表中的什麼位址,email之類的字段
使用者角色表來確實使用者對應的角色,而角色表中的角色值來對應功能表的功能編號字段,來確定某角色是否具有此功能(操作)的許可權,關鍵的問題就是在這裡,而上面的模組表,來確定乙個模組間的功能集合,比如文件管理模組中上傳文件功能,修改文件屬性功能.下面我舉例來說明一下他們之間的關係,就拿文件管理來說明吧,正好最近也在開發j
模組表(0,0,文件管理,doclibmanage,3);//請對應資料庫,注意首個是自動生成id
功能表(0,0,新建目錄,createfloder,0);//同上
功能表(0,1,上傳檔案,uploadfile,0);//同上
功能表(0,2,修改屬性,modiattr,0);//同上
再來看看,角色來對應功能的原理
角色表(0,操作員,010,日常維護)
關鍵是角色表裡的角色值010,它代表如下含義
角色值
010
含義
說明
第0位
0
對應功能表中的功能編號0,即新建目錄
0代表沒有許可權
此角色不可以新建目錄
第1位
1
對應功能表中的功能編號1,即上傳檔案
1代表有許可權
此角色可以上傳檔案
第2位
0
對應功能表中的功能編號2,即修改屬性
0代表沒有許可權
此角色不可以修改屬性
就這樣,乙個輕量級的許可權設計系統就可以實現了
Swift 輕量級網路層設計
普遍我們的網路層設計的時候直接是如下結構apimanager.post url,parameter,completehandle 伺服器配置在apimanager.m檔案中進行配置。這樣乙個簡單便捷網路請求類便寫好了,但細心思考我們會發現如下一些問題 相同api可能分散各處導致每次需要填寫的引數ke...
利用註解和反射實現超輕量級許可權管理
專案中需要用到許可權管理,但是角色非常少,覺得使用spring security會比較重。所以,打算自己寫乙個簡單的角色檢查,實現原理就是 把使用者的資訊 一定要包含角色id 放到session裡,然後在controller方法上加註解,該註解會標記哪些角色可以訪問,通過aop反射解析註解,同時從s...
輕量級的web server
web介面是乙個應用系統常用的介面,本文所說的輕量級的web server是指應用系統不以web訪問為主,web介面提供輔助作用,例如,修改配置等,此時,對web server的要求是程式簡單 無或者很輕的併發 能嵌入到應用中最好。linux上nginx的安裝依賴於pcre,這是乙個與perl相容的...