菜單與權(quán)限設(shè)計(jì)思路
一.設(shè)計(jì)思路
·面向開發(fā)人員友好
在長(zhǎng)期以來的開發(fā)過程中,我們面臨的主要問題就出現(xiàn)在開發(fā)友好的點(diǎn)上婴削,開發(fā)人員使用框架無法進(jìn)行流暢的開發(fā)玛迄,經(jīng)常需要打斷思路解決權(quán)限問題,有時(shí)也經(jīng)常面臨DEBUG過程中大量出現(xiàn)無權(quán)限問題,不僅拖延了開發(fā)效率,也降低了代碼質(zhì)量,因此面對(duì)開發(fā)人員的權(quán)限設(shè)計(jì)友好程度直接絕定了整體的開發(fā)效率與質(zhì)量畏浆,解決該問題刻不容緩。
·面向使用用戶友好
最好的工具永遠(yuǎn)是無須學(xué)習(xí)的狞贱,作為一個(gè)PHP程序員我們尤其對(duì)此收益匪淺刻获。在以往的B/S應(yīng)用開發(fā)成果中,對(duì)于權(quán)限管理這種學(xué)習(xí)成本較高且使用頻率較低的功能用戶往往選擇不學(xué)習(xí)使用斥滤,但由此引發(fā)的誤操作對(duì)于程序流程往往是致命的将鸵。因此我們積極應(yīng)對(duì)方式是提供學(xué)習(xí)成本低廉且穩(wěn)定系數(shù)高的權(quán)限管理界面。
二.需求分析
1.菜單部分
菜單部分根據(jù)需求共分為三級(jí)佑颇,層級(jí)關(guān)系為分別為:
子系統(tǒng)--模塊--功能
其中子系統(tǒng)為自定義部分顶掉,可以由用戶自定義定制,用戶可以自定義子系統(tǒng)中的功能挑胸,但不能對(duì)模塊中的功能進(jìn)行操作痒筒。
模塊中的功能由開發(fā)人進(jìn)行設(shè)定,設(shè)定后不可更改茬贵,但在權(quán)限部份可以對(duì)模塊中得功能進(jìn)行操作簿透。
2.權(quán)限部份
權(quán)限部份根據(jù)用戶屬性需求,用戶層級(jí)關(guān)系為:
組織機(jī)構(gòu)--崗位--用戶
組織機(jī)構(gòu)與崗位為無限子父級(jí)劃分其中崗位與權(quán)限設(shè)置對(duì)應(yīng)關(guān)系解藻。
權(quán)限分為四級(jí)老充,前三級(jí)分別對(duì)應(yīng)菜單部分的子系統(tǒng)--模塊--功能三級(jí)。第四季功能中具體的操作權(quán)限(例如增加螟左、刪除啡浊、修改等)。
三.實(shí)現(xiàn)思路
在實(shí)現(xiàn)上胶背,權(quán)限部份作為全局注冊(cè)的中間件形式出現(xiàn)巷嚣,任何用戶請(qǐng)求都會(huì)經(jīng)過權(quán)限中間件。
在權(quán)限控制的方式上钳吟,整體流程如下圖
特殊方法檢測(cè):用戶請(qǐng)求接入后廷粒,首先執(zhí)行特殊方法檢測(cè)。特殊方法檢測(cè)是針對(duì)部分無須經(jīng)過驗(yàn)證權(quán)限的特殊情況過濾。例如登錄方法坝茎,注冊(cè)方法等涤姊。如果特殊方法認(rèn)證為真,則無須進(jìn)行驗(yàn)證嗤放,直接允許訪問砂轻。
IP檢測(cè):IP檢測(cè)是通過限制客戶端IP的方式進(jìn)行的權(quán)限認(rèn)證,該認(rèn)證是可選的斤吐。如果不通過直接進(jìn)行拒絕訪問處理。
動(dòng)態(tài)檢測(cè):動(dòng)態(tài)檢測(cè)是為開發(fā)人員提供的特殊檢測(cè)方式厨喂,該方法內(nèi)可以根據(jù)特殊需求進(jìn)行驗(yàn)證的定制和措。當(dāng)動(dòng)態(tài)檢測(cè)返回NULL時(shí),正常進(jìn)入下一步驗(yàn)證蜕煌,當(dāng)動(dòng)態(tài)檢測(cè)為False時(shí)派阱,直接拒絕訪問,當(dāng)動(dòng)態(tài)檢測(cè)為True時(shí)直接允許訪問斜纪。
權(quán)限驗(yàn)證:權(quán)限驗(yàn)證將根據(jù)當(dāng)前URL和當(dāng)前用戶的用戶組進(jìn)行匹配贫母,如果匹配成功則允許訪問,匹配失敗將拒絕訪問盒刚。