999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MVC的WEB信息系統(tǒng)RBAC 權限管理和菜單生成設計

2014-04-29 00:00:00劉芳芳呂孝亮

摘要:文章通過節(jié)點,角色,用戶和這三者之間兩兩關系的數(shù)據庫表設計,實現(xiàn)了三個好處:系統(tǒng)的維護靈活度增加了,新增功能只需要簡單幾步就可以加入菜單;用戶對應多個角色可以減少了每個用戶設定權限的工作量;方便的生成每個用戶對應的菜單。

關鍵詞:訪問控制;權限管理;RBAC

中圖分類號:TP3092 文獻標識碼:A文章編號:1006-8937(2014)15-0074-01

1要求

①有三級菜單。②對不同的用戶顯示相應的菜單,用戶有權限的菜單才顯示,沒有權限的不顯示。③系統(tǒng)能在使用的同時不斷的加功能,也就是菜單會動態(tài)的增加。

2解決方法

①系統(tǒng)訪問URL形如:http://serverName/appName/mod-

ule/action/id/1/,這里的module是控制器,也是獨立的功能,action是方法,一個module對應0~N個action。②使用在用戶和菜單之間,加入角色概念。比如“管理員”有查看日志的功能。“產品”一般就是編輯功能。那產品主管就可以選定管理員+產品就可以了。而不用再新建一個“產品主管”的用戶。

使用5個數(shù)據表來實現(xiàn)這個功能,分別是Node(節(jié)點表)見表1,Role(角色表)見表2,user(用戶表)見表3,Node_role(節(jié)點-角色對應表)見表4,User_Role(用戶-角色對應表)見表5,數(shù)據表部分字段設計如下。

3基礎菜單的添加

這是整個系統(tǒng)初始化的基礎步驟,假設添加一級菜單三個排序分別為:基本信息、訂單、用戶。基本信息下有兩個二級菜單:新聞、商品,應該加入菜單表如:

①一級菜單的添加:INSERT INTO Node(name,level_1,level_2,level_3)VALUES(‘info’,1,0,0)。②二級菜單的添加:INSERT INTO Node(name,level_1,level_2,level_3)VALUES(‘news’,1,1,0)。

一,二級菜單的關聯(lián)完全是依據排序,和ID沒有關系,這樣的好處是:和界面設定的菜單直接對應起來,后面要加功能(三級菜單)的時候想加入第幾個一級菜單和第幾個二級菜單就可以直接填寫,直觀方便。

4菜單增加

這是基礎步驟。每當一個功能(控制器module)完成上線后,要把這個功能加入到系統(tǒng)的菜單。就是添加節(jié)點。一個控制器可以有N個節(jié)點,至少有一個節(jié)點,這個節(jié)點是它本身。其他的節(jié)點表示方法(action),比如常見的添加add,修改edit,刪除edit。

那么,假設把一個有添加add,修改edit,刪除del三個方法的焦點新聞功能加到二級菜單新聞(這個二級菜單新聞是前面定義好的,一級菜單排序1,二級菜單排序1)下,那么SQL語句如:

INSERT INTO NodeVALUES(,0,2,‘jd-news’,’焦點新聞’,1,1,1);

得到ID假設為888,接著添加方法:

INSERT INTO Node VALUES(,888,‘add’,,3,0,0,0);

INSERT INTO Node VALUES(,888,‘edit’,,3,0,0,0);

INSERT INTO Node VALUES(,888,‘del’,,3,0,0,0);

這樣,根據level_1,level_2,level_3的值,就可以得出控制器節(jié)點的排序位置,如果level_2,level_3為0,表示這個是一個一級菜單,如果level_3為0,那么這就是一個二級菜單,如果全為0,則表示這是某個控制器的方法。

5權限設定

分兩步:①給角色分配權限,最好是角色間的權限不重復。加入node_role節(jié)點角色對應表。②給用戶設定角色,一個用戶可以多個角色,加入user_role用戶角色對應表。

6前端菜單生成

這是重要的步驟,用戶登錄進入系統(tǒng)后,生成這個用戶對應的菜單。方法如下:

①獲取用戶ID,假設為888,初始化一個菜單數(shù)組menu。②查詢Node(節(jié)點表)生成菜單,先按順序生成一級菜單列表,加入菜單數(shù)組menu,每個菜單標志‘n’。③循環(huán)一級菜單,按順序生成每個二級菜單,加入菜單數(shù)組menu,每個菜單標志一個‘n’。④循環(huán)二級級菜單,按順序,并關聯(lián)用戶-角色對應表和節(jié)點-角色對應表,檢索出這個用戶可以訪問的節(jié)點列表。一一加入菜單數(shù)組,加入菜單數(shù)組的每個節(jié)點,都把它所對應的二級菜單和一級菜單的‘n’標志去掉,已經去掉的就忽略。⑤再循環(huán)一次菜單數(shù)組menu,把所有標志為‘no’的一級菜單和二級菜單去掉。

這就得到一個可用在前端顯示的菜單數(shù)組,形如:

$menu=array(\"基本信息\"=>array(\"新聞\"=>array(\"焦點新聞\"), \"商品\"),

\"用戶\"=>array(\"所有用戶\"=>array(\"用戶統(tǒng)計\"),);

‘no’標志的作用在于,一開始設定這個菜單不顯示,那么如果有查詢到這個菜單下的一個控制器(三級菜單)有權限,那么這個三級菜單所屬的二級菜單和一級菜單,都會顯示。最后再把‘no’標志的菜單都刪掉,這樣用戶就看不到自己沒有權限的其他菜單了。

7后端代碼驗證

為了防止有些非法用戶試圖通過直接輸入URL來訪問,那么在后端應該要做個檢測機制。可以在公共類里寫個檢測的方法。并且所有的控制器都繼承這個公共類。那么這個檢測的方法實現(xiàn)原理如下:

①獲取用戶的user_id,訪問的模型名module,訪問的方法名action。②查詢node表中這個節(jié)點的node_id,這里分兩小步:查詢node表中name=‘module’的ID假設為m_id;查詢node表中name=‘action’AND pid=m_id的ID為n_id。③依靠user_role.roleid=node_role.role_id這個條件,關聯(lián)用戶-角色對應表和節(jié)點-角色對應表這兩個表,查詢where node_

id=n_id的記錄。④如果有記錄,表示可以訪問;如果沒有記錄,拒絕訪問。

參考文獻:

[1] 信科,楊峰,楊光旭,等.基于RBAC權限管理系統(tǒng)的優(yōu)化設計與實現(xiàn)[J].計算機技術與發(fā)展,2011,(7).

[2] 倪東英,張曉麗.基于RBAC的用戶權限管理的設計與實現(xiàn)[J] 濟南大學學報(自然科學版),2010,(2).

[3] 馬麗,馬世龍,眭躍飛,等.一種RBAC的描述邏輯表示方法[J].計算機科學,2010,(3).

主站蜘蛛池模板: 精品五夜婷香蕉国产线看观看| 欧美一级特黄aaaaaa在线看片| 91精品国产自产在线观看| 色成人综合| 国产96在线 | 亚洲国产成人超福利久久精品| 一本大道视频精品人妻 | 国产尤物jk自慰制服喷水| 国产手机在线ΑⅤ片无码观看| 亚洲精品无码抽插日韩| AV片亚洲国产男人的天堂| 曰AV在线无码| 国产精品永久免费嫩草研究院| 亚洲精品少妇熟女| 永久免费无码成人网站| 欧美精品在线观看视频| 天天躁日日躁狠狠躁中文字幕| 亚洲水蜜桃久久综合网站 | 久久久精品无码一区二区三区| 美女亚洲一区| 国产午夜无码专区喷水| 97影院午夜在线观看视频| 成年女人18毛片毛片免费| 国产真实乱了在线播放| 国产在线观看精品| 欧美日韩免费在线视频| 国产精品第5页| 91久久精品国产| 亚洲成人手机在线| 一区二区三区四区精品视频 | 永久成人无码激情视频免费| 日韩精品一区二区三区免费在线观看| 亚洲精品第五页| 午夜国产不卡在线观看视频| 黄色一级视频欧美| 国产制服丝袜无码视频| 日本三区视频| 中文字幕日韩视频欧美一区| 国产一区二区精品福利| 精品久久久久久成人AV| 国产成人无码综合亚洲日韩不卡| 国产又粗又爽视频| 日韩欧美国产精品| 免费在线不卡视频| 亚洲AⅤ波多系列中文字幕| 国产色爱av资源综合区| 中文字幕无码中文字幕有码在线| 日本成人福利视频| 国产欧美网站| 国产亚洲精品91| 一级香蕉人体视频| 久久人午夜亚洲精品无码区| 亚洲一区二区三区在线视频| 亚洲欧洲美色一区二区三区| 99在线免费播放| 18禁高潮出水呻吟娇喘蜜芽| 操操操综合网| 日韩视频精品在线| 国产XXXX做受性欧美88| 超级碰免费视频91| 国产麻豆精品手机在线观看| 国产老女人精品免费视频| 亚洲人成网7777777国产| 日韩一级毛一欧美一国产| 中文字幕伦视频| 国产精品毛片在线直播完整版| 无码中字出轨中文人妻中文中| 国产成人精品视频一区二区电影| 色久综合在线| 99成人在线观看| 亚洲第一页在线观看| 久精品色妇丰满人妻| 国产在线小视频| 亚洲国产精品无码AV| 91探花国产综合在线精品| 精品偷拍一区二区| 日韩成人免费网站| 久久免费精品琪琪| 久夜色精品国产噜噜| 四虎成人精品| 国产凹凸视频在线观看| 久久黄色毛片|