菜單與權(quán)限設(shè)計(jì)思路
一.設(shè)計(jì)思路
·面向開發(fā)人員友好
在長期以來的開發(fā)過程中,我們面臨的主要問題就出現(xiàn)在開發(fā)友好的點(diǎn)上,開發(fā)人員使用框架無法進(jìn)行流暢的開發(fā),經(jīng)常需要打斷思路解決權(quán)限問題,有時(shí)也經(jīng)常面臨DEBUG過程中大量出現(xiàn)無權(quán)限問題,不僅拖延了開發(fā)效率,也降低了代碼質(zhì)量,因此面對開發(fā)人員的權(quán)限設(shè)計(jì)友好程度直接絕定了整體的開發(fā)效率與質(zhì)量,解決該問題刻不容緩。
·面向使用用戶友好
最好的工具永遠(yuǎn)是無須學(xué)習(xí)的,作為一個(gè)PHP程序員我們尤其對此收益匪淺。在以往的B/S應(yīng)用開發(fā)成果中,對于權(quán)限管理這種學(xué)習(xí)成本較高且使用頻率較低的功能用戶往往選擇不學(xué)習(xí)使用,但由此引發(fā)的誤操作對于程序流程往往是致命的。因此我們積極應(yīng)對方式是提供學(xué)習(xí)成本低廉且穩(wěn)定系數(shù)高的權(quán)限管理界面。
二.需求分析
1.菜單部分
菜單部分根據(jù)需求共分為三級,層級關(guān)系為分別為:
子系統(tǒng)--模塊--功能
其中子系統(tǒng)為自定義部分,可以由用戶自定義定制,用戶可以自定義子系統(tǒng)中的功能,但不能對模塊中的功能進(jìn)行操作。
模塊中的功能由開發(fā)人進(jìn)行設(shè)定,設(shè)定后不可更改,但在權(quán)限部份可以對模塊中得功能進(jìn)行操作。
2.權(quán)限部份
權(quán)限部份根據(jù)用戶屬性需求,用戶層級關(guān)系為:
組織機(jī)構(gòu)--崗位--用戶
組織機(jī)構(gòu)與崗位為無限子父級劃分其中崗位與權(quán)限設(shè)置對應(yīng)關(guān)系。
權(quán)限分為四級,前三級分別對應(yīng)菜單部分的子系統(tǒng)--模塊--功能三級。第四季功能中具體的操作權(quán)限(例如增加、刪除、修改等)。
三.實(shí)現(xiàn)思路
在實(shí)現(xiàn)上,權(quán)限部份作為全局注冊的中間件形式出現(xiàn),任何用戶請求都會(huì)經(jīng)過權(quán)限中間件。

在權(quán)限控制的方式上,整體流程如下圖

特殊方法檢測:用戶請求接入后,首先執(zhí)行特殊方法檢測。特殊方法檢測是針對部分無須經(jīng)過驗(yàn)證權(quán)限的特殊情況過濾。例如登錄方法,注冊方法等。如果特殊方法認(rèn)證為真,則無須進(jìn)行驗(yàn)證,直接允許訪問。
IP檢測:IP檢測是通過限制客戶端IP的方式進(jìn)行的權(quán)限認(rèn)證,該認(rèn)證是可選的。如果不通過直接進(jìn)行拒絕訪問處理。
動(dòng)態(tài)檢測:動(dòng)態(tài)檢測是為開發(fā)人員提供的特殊檢測方式,該方法內(nèi)可以根據(jù)特殊需求進(jìn)行驗(yàn)證的定制。當(dāng)動(dòng)態(tài)檢測返回NULL時(shí),正常進(jìn)入下一步驗(yàn)證,當(dāng)動(dòng)態(tài)檢測為False時(shí),直接拒絕訪問,當(dāng)動(dòng)態(tài)檢測為True時(shí)直接允許訪問。
權(quán)限驗(yàn)證:權(quán)限驗(yàn)證將根據(jù)當(dāng)前URL和當(dāng)前用戶的用戶組進(jìn)行匹配,如果匹配成功則允許訪問,匹配失敗將拒絕訪問。