額挡篓,RBAC婉陷,首先要了解一下RBAC的意思,即(Role-Based Access Control)基于角色的訪問控制。
一般情況下官研,我們實(shí)現(xiàn)權(quán)限訪問控制的基本思路是這樣的:
1.user表(用戶表)
2.role表(角色)
3.node表(操作應(yīng)用表)【解釋一下秽澳,在新聞發(fā)布頁面中,對(duì)新聞的刪除就是一個(gè)操作】
4.role_node (角色與操作關(guān)聯(lián)表)【表內(nèi)字段:id戏羽,role_id, node_id 】
5.role_user(用戶與角色關(guān)聯(lián)表)【表內(nèi)字段一般為:id,role_id,node_id】
以上5張表担神,是我們的庫表結(jié)構(gòu):
--------------------------------------------------------------------------------------------------
每當(dāng),我們訪問某個(gè)頁面的時(shí)候始花,先判斷用戶是否有無這樣的權(quán)限妄讯,如果有,什么也不做酷宵;如果沒有權(quán)限亥贸,提示用戶缺少相應(yīng)權(quán)限,跳轉(zhuǎn)或者返回浇垦。
當(dāng)我們訪問頁面的時(shí)候炕置,首先必須經(jīng)過一個(gè)過濾器或者Action,總之就是在頁面展示之前的一個(gè)攔截功能的對(duì)象,在這個(gè)對(duì)象里朴摊,根據(jù)用戶ID等信息默垄,將該用戶的權(quán)限信息從數(shù)據(jù)庫內(nèi)取出,進(jìn)行判斷甚纲。
一般情況下口锭,每一個(gè)頁面我們?yōu)橹渲靡粋€(gè)Action 或者攔截器類。為了避免重復(fù)性的工作介杆,我們可以寫一個(gè)父類包含這樣一個(gè)公共的方法讹弯,讓其他的Action類或者攔截器來繼承父類。