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

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