一个简易实用的web权限管理模块的应用与实现
??? 本文介紹一個(gè)簡(jiǎn)易實(shí)用的web權(quán)限管理模塊的應(yīng)用與實(shí)現(xiàn)。
??? 先介紹數(shù)據(jù)模型和應(yīng)用界面,后繼對(duì)實(shí)現(xiàn)細(xì)節(jié)做選擇性闡述。
??? 數(shù)據(jù)表關(guān)系如下:
??
?
????? 該圖標(biāo)明了登陸用戶(hù)、角色、部門(mén)(機(jī)構(gòu))、用戶(hù)組、角色和模塊功能之間的關(guān)系。為方便起見(jiàn),所有表都只保留必要字段。
????? 在本系統(tǒng)設(shè)計(jì)中,如下概念有著相對(duì)特殊的含義。
????? 一、用戶(hù)(user): 系統(tǒng)的使用者。
????? 二、部門(mén)(org):體現(xiàn)了用戶(hù)的行政關(guān)系,
????? 三、組(group) :是某相同職能的用戶(hù)的集合,可以和用戶(hù)一樣與角色產(chǎn)生關(guān)聯(lián)。設(shè)置組的目的是為了方便用戶(hù)的角色分配,減少用戶(hù)與角色的直接對(duì)應(yīng)關(guān)系。用戶(hù)的角色可以是其 組角色和其直接分配的角色之合集。限于作者的時(shí)間和精力,組功能在該系統(tǒng)中沒(méi)有具體的實(shí)現(xiàn)。
????? 四、角色(role):角色對(duì)應(yīng)著某些功能(function)的集合,被分配一個(gè)角色意味著有權(quán)執(zhí)行這些功能。角色表中的字段"functions"記錄相關(guān)的功能id,id之間用逗號(hào)隔開(kāi)。
????? 五、功能(function):系統(tǒng)的一個(gè)或者多個(gè)執(zhí)行準(zhǔn)入。
????? 那么如何表現(xiàn)“功能”以最終實(shí)現(xiàn)控制用戶(hù)的每一個(gè)細(xì)微動(dòng)作呢?假如不特定于某種架構(gòu),可以這么設(shè)計(jì)該表字段:
Sql代碼 ???? 假定有三個(gè)web訪(fǎng)問(wèn)路徑
? http://127.0.0.1:8080/app/sys/user.jsp?action=index&userid=1203?
??http://127.0.0.1:8080/app/sys/user.yuetong?action=add
??http://127.0.0.1:8080/app/sys/user.yuetong?action=update&userid=1203
???? 這三個(gè)訪(fǎng)問(wèn)點(diǎn)被人為的劃分為兩個(gè)功能準(zhǔn)入(當(dāng)然亦可以是一個(gè)或者三個(gè)),見(jiàn)下圖?????
???
???? 由此可知,“功能”是衡量用戶(hù)準(zhǔn)入的最小刻度。在用戶(hù)訪(fǎng)問(wèn)某個(gè)地址的時(shí)候,我們可以通過(guò)解析URL對(duì)比他擁有的“功能”權(quán)限來(lái)實(shí)現(xiàn)權(quán)限管理。
???? 借助于某些架構(gòu)或者設(shè)計(jì)思路,可以避免用戶(hù)直接訪(fǎng)問(wèn)JSP頁(yè)面,甚至全系統(tǒng)的訪(fǎng)問(wèn)地址都使用同一后綴,這種情況下可以省去SUFFIX字段?!”鞠到y(tǒng)就是這種情況(JSP頁(yè)面置于WEB-INF下,采用struts2架構(gòu))。
???? 六、功能模塊樹(shù)(function tree):功能的目錄組織,起分類(lèi)的作用。在為角色設(shè)定功能的時(shí)候,用戶(hù)界面可以利用帶選擇框的js樹(shù)。而這顆js樹(shù)是后臺(tái)的功能樹(shù)表以及功能表的聯(lián)合 表現(xiàn)形式。功能模塊樹(shù)可以方便的與菜單樹(shù)建立映射關(guān)系,限于作者的時(shí)間和精力,該系統(tǒng)并未實(shí)現(xiàn)菜單樹(shù)。
????下面從實(shí)際應(yīng)用入手做直觀的介紹:
???? 用超級(jí)管理員帳號(hào)YT000登陸(該帳號(hào)擁有全部的權(quán)限,帳號(hào)信息應(yīng)該預(yù)先寫(xiě)入數(shù)據(jù)庫(kù)或者以配置文件方式放到類(lèi)路徑下):
???? 首先是機(jī)構(gòu)管理部分,這里可以編輯某個(gè)公司或者單位的組織結(jié)構(gòu):
????
???然后進(jìn)入用戶(hù)管理部分,會(huì)有一個(gè)用戶(hù)列表:
?? 可以編輯用戶(hù)的屬性,設(shè)置其所屬機(jī)構(gòu):
?
?
?? 還可以為用戶(hù)設(shè)定多個(gè)角色:
?? 接著,再看看角色的列表:
?? 可以為角色設(shè)定功能。該角色設(shè)定樹(shù)的生成,在后繼文章中會(huì)有介紹。
?
?? 最后,在系統(tǒng)資源部分,可以進(jìn)行功能模塊樹(shù)的編輯(和機(jī)構(gòu)樹(shù)的編輯一樣)
?
?? 點(diǎn)擊編輯詳細(xì)功能,可以為選中的結(jié)點(diǎn)設(shè)置具體功能:
?
?
????? 配置妥當(dāng)以后,當(dāng)我們以一個(gè)普通用戶(hù)登錄,執(zhí)行某個(gè)操作的時(shí)候,如果沒(méi)有權(quán)限,系統(tǒng)會(huì)做出提示。關(guān)于用戶(hù)的權(quán)限驗(yàn)證,后繼會(huì)有介紹。
?
???? 相關(guān)闡述請(qǐng)關(guān)注后繼文章。
總結(jié)
以上是生活随笔為你收集整理的一个简易实用的web权限管理模块的应用与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CGI方式获取RTX中用户的电话和邮箱
- 下一篇: win7 怎么关uac win7如何关闭