權(quán)限控制功能設(shè)計

我們搭建多用戶多角色的業(yè)務(wù)系統(tǒng),功能根據(jù)登錄用戶的權(quán)限來控制是少不了的。這里總結(jié)一下有關(guān)的設(shè)計。

首先,功能模塊的劃分,我們得整理一份映射表,存在數(shù)據(jù)庫,配置文件,服務(wù)器內(nèi)存皆可。最好統(tǒng)一存在服務(wù)端,這樣前后端都有一個一致的mapping,變更的話也只用變更一個地方。

其次,登錄授權(quán)的過程,前端登錄成功獲取當(dāng)前用戶的授權(quán)模塊ID數(shù)組,這個數(shù)組存在全局變量,localstorage,sessionstorage皆可。前端還需要一個驗證授權(quán)的公共方法提供給各個模塊調(diào)用。

然后,登錄成功我們一般進(jìn)去一個管理首頁,會加載功能菜單,可能有多級,這個時候要根據(jù)權(quán)限做一下過濾。SPA的web應(yīng)用越來越多了,我們對路由的管理也更方便了,對后端的服務(wù)我們可以啟用統(tǒng)一的攔截,比如401的時候提示沒有權(quán)限,跳轉(zhuǎn)登錄或者前一個有效的路由。同時也要監(jiān)聽路由跳轉(zhuǎn),比如在angularjs的$stateChangeStart,如果是非法路由我們就阻止本次跳轉(zhuǎn)。

如果我們的權(quán)限控制要求精確到模塊的具體操作的話,那我們的UI得隱藏有關(guān)按鈕,阻止有關(guān)方法的運(yùn)行。在angularjs框架下,我們可以在權(quán)限按鈕上加一個屬性,比如fcode="01004",再寫一個directive 解析這個fcode,判斷無權(quán)限把元素直接移出文檔。

最后,權(quán)限控制最關(guān)鍵還是后端服務(wù)得做好把控,前端只在UI和交互上做些合理的控制。另外對于權(quán)限互相依賴的情況,我們在權(quán)限設(shè)置界面可以做些關(guān)聯(lián)判斷,比如勾選編輯功能,查看功能也會默認(rèn)勾選。如果不這樣做的話,那么后端接口得做兼容,比如查看的方法,有編輯或者查看權(quán)限的用戶都可以調(diào)用。

以上只是我個人的設(shè)計,可能太規(guī)矩了,歡迎各位指出漏洞或者提供新的思路。有關(guān)的源碼放在我的github。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容