PHP MVC中RBAC的最佳實現(xiàn)方案

個人認為的PHP MVC框架中實現(xiàn)RBAC的原理 順序:

數(shù)據(jù)表

1.tb_user(id,uname,roleid)

2.tb_role(roleid,rolename)

3.tb_module(moduleid,moudulename,mvc_url)

4.tb_access(accessid,roleid,mouduleid)

實現(xiàn)原理

1.根據(jù)$uid得到$roleid喂窟。

2.根據(jù)當前MVC參數(shù)__CLASS____METHOD__拼接成路由網址$mvc_url

3.根據(jù)$mvc_url去表 tb_module中查詢磨澡,得到$moduleid

4.根據(jù)$roleid,$mouduleid查詢表 tb_access中是否有此條記錄

5.如果 有,可以訪問稳摄;如果沒有,禁止訪問該動作 action 方法

缺點

假如有一個模塊尉共, class Article,方法function lists();弃锐。

如果當前用戶只有查看權限卻沒有修改、添加剧蚣、刪除權限旋廷,那么lists頁面中關于 添加 修改 刪除 按鈕如何判斷?


另外一個方法

數(shù)據(jù)表

1.tb_user(userid,username,roleid)

2.tb_role(roleid,rolename)

3.tb_module(moduleid,moudulename,link,upid)

4.tb_permission(roleid,title,mouduleid,permission)

其中 permission 的值有這幾種

{1:查看,2:添加,4:修改,8:刪除,16:...}

RBAC實現(xiàn)流程

1.通過用戶的 $userid 得到 $roleid

2.通過用戶當前的網址去查詢tb_module表中對應的link目尖,得到 $moduleid扎运。

如果該module有父模塊。那么獲得他的父模塊洞拨。

比如當前模塊MVC網址是 article/add,那么他的真正moduleid是

select ? moduleid ? fromtb_module ? where ? ?id=(select ? upid ? fromtb_module ? ?where ? ? link='article/add')负拟;

3.通過 $roleid 和 $moduleid 去查詢 tb_permission,得到記錄總和

select ?sum(permission) ?as ?permission ? fromtb_permission ? where ? ?roleid=$roleid ? and ? moduleid=$moduleid

4.如果當前訪問 article/lst

switch($permission)

{case1://只有訪問權限break;

case2://訪問花吟、添加權限break;

case4://訪問厨姚、添加、修改權限break;

case8://訪問矾麻、添加芭梯、修改、刪除權限break;

case16:break;}

對于第二種方法甩牺,說下看法累奈,類似于電腦文件的 0777這種權限。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末搞乏,一起剝皮案震驚了整個濱河市戒努,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侍筛,老刑警劉巖撒穷,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異禽笑,居然都是意外死亡蛤奥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門邀杏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來望蜡,“玉大人拷恨,你說我怎么就攤上這事⊥笾叮” “怎么了芦疏?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵酸茴,是天一觀的道長兢交。 經常有香客問我,道長酪穿,這世上最難降的妖魔是什么晴裹? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮溉潭,結果婚禮上少欺,老公的妹妹穿的比我還像新娘。我一直安慰自己畏陕,他們只是感情好仿滔,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布崎页。 她就那樣靜靜地躺著,像睡著了一般飒焦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翁巍,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天灶壶,我揣著相機與錄音杈曲,去河邊找鬼胸懈。 笑死恰响,一個胖子當著我的面吹牛,可吹牛的內容都是我干的渔隶。 我是一名探鬼主播洁奈,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呈野!你這毒婦竟也來了印叁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昨悼,失蹤者是張志新(化名)和其女友劉穎跃洛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葱蝗,經...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡细燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年玻驻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佛析。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡彪蓬,死狀恐怖,靈堂內的尸體忽然破棺而出膘茎,到底是詐尸還是另有隱情,我是刑警寧澤披坏,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布棒拂,位于F島的核電站,受9級特大地震影響帚屉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜喻旷,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一且预、第九天 我趴在偏房一處隱蔽的房頂上張望烙无。 院中可真熱鬧,春花似錦截酷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽康铭。三九已至,卻和暖如春赌髓,著一層夾襖步出監(jiān)牢的瞬間从藤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工锁蠕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夷野,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓荣倾,卻偏偏與公主長得像悯搔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舌仍,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內容