最近一直在研究權(quán)限,今天終于把權(quán)限搞定了以后準(zhǔn)備自己寫(xiě)個(gè)商城,對(duì)以后的幫助非常大的。下面簡(jiǎn)單談?wù)勱P(guān)于權(quán)限的實(shí)現(xiàn).
權(quán)限主要分為以下三個(gè)類(lèi):
用戶(hù)、角色、權(quán)限表
權(quán)限主要分為三個(gè)步驟:
1、安裝(初始化數(shù)據(jù))
管理員:(超級(jí)管理員)一個(gè)擁有所有權(quán)限的用戶(hù),這個(gè)用戶(hù)在程序安裝時(shí)就要初始化,
權(quán)限數(shù)據(jù):這個(gè)表主要存儲(chǔ)權(quán)限的名字和url,這個(gè)權(quán)限主要有兩個(gè)作用,一個(gè)是菜單的顯示,其中一級(jí)菜單沒(méi)有url只是分類(lèi)的作用。
2、權(quán)限的分配:
權(quán)限的分配主要是針對(duì)某個(gè)角色和權(quán)限建立管理,權(quán)限表和角色表是多對(duì)多的關(guān)系
3、權(quán)限的使用:
權(quán)限的使用,我們要做到,具有哪些權(quán)限就能讓用戶(hù)看到哪些權(quán)限,而且看不到的權(quán)限即使通過(guò)url訪(fǎng)問(wèn)也沒(méi)有訪(fǎng)問(wèn)的權(quán)限
具體實(shí)現(xiàn)如下:
1、左側(cè)菜單的顯示:
左側(cè)菜單一般我們是首先用一個(gè)監(jiān)聽(tīng)器,在程序啟動(dòng)時(shí),將所有的頂級(jí)權(quán)限查出來(lái)放到application最大的作用域中,然后在用戶(hù)登錄時(shí),從application作用域中去拿 權(quán)限數(shù)據(jù),在菜單遍歷的過(guò)程中在user類(lèi)中寫(xiě)個(gè)判斷是否具有權(quán)限的方法,然后用標(biāo)簽去判斷,如果有就顯示如果沒(méi)有就不去顯示,這樣就可以實(shí)現(xiàn)菜單的顯示了
好處:我們也可以每次用戶(hù)登錄時(shí)去數(shù)據(jù)庫(kù)中查詢(xún),這樣會(huì)浪費(fèi)很多的資源,因?yàn)闄?quán)限的數(shù)據(jù)是我們?cè)谝婚_(kāi)始時(shí)就初始化好的,一般菜單是不會(huì)變得,所有放到作用域 中,不僅僅效率高而且也降低資源的浪費(fèi),如果我們需要新增加新的菜單只需要重啟下程序就好了
2、右側(cè)連接的顯示:
比如說(shuō)是否具有部門(mén)刪除的權(quán)限,我們可以在user里面寫(xiě)個(gè)根據(jù)url判斷權(quán)限的方法,同上面的實(shí)現(xiàn)一樣,首先從session中取出所有的角色,然后遍歷所有的角色,內(nèi) 部遍歷所有角色的權(quán)限,然后和正在遍歷的權(quán)限對(duì)比,如果有就顯示,沒(méi)有就不顯示。
如果我們使用的struts標(biāo)簽,我們可以重新定義下<s:a></s:a>標(biāo)簽的實(shí)現(xiàn),首先判斷是否具有權(quán)限,這樣我們可以在頁(yè)面層什么都不用更改即可實(shí)現(xiàn)權(quán)限效果。
3、action的攔截
前兩步我們只是實(shí)現(xiàn)的表現(xiàn)層的目的,做到了用戶(hù)具有什么權(quán)限就顯示什么數(shù)據(jù),但是如果用戶(hù)通過(guò)url直接訪(fǎng)問(wèn)的話(huà)還是可以對(duì)數(shù)據(jù)進(jìn)行操作的,那么如果實(shí)現(xiàn)對(duì)每次 請(qǐng)求的攔截呢?還是通過(guò)interceptor攔截器。
我們首先寫(xiě)個(gè)檢查權(quán)限的攔截器,繼承abstractInterceptor,然后在struts.xml中配置下就好了。
權(quán)限主要分為一般權(quán)限,登錄權(quán)限,和登錄后具有的不用管理的權(quán)限,
一般權(quán)限:比如部門(mén)的增刪改查
登錄權(quán)限:比如登錄
不用管理的權(quán)限:如果注銷(xiāo)
項(xiàng)目開(kāi)發(fā)中關(guān)于權(quán)限的實(shí)現(xiàn)方案簡(jiǎn)單描述(幫助以后回憶)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
