在各種後臺系統中都會涉及到許可權的管控,從功能許可權的管控,到數據許可權的管控,都是為了讓系統的在使用的過程中更加的安全。功能許可權管控是對針對不同的角色可以進行不同的功能操作,而數據許可權管控是針對不同的角色可以查看不同的數據。這篇文章主要介紹 JeeSite 中對功能許可權的管控,也就是訪問控制許可權的使用, ...
在各種後臺系統中都會涉及到許可權的管控,從功能許可權的管控,到數據許可權的管控,都是為了讓系統的在使用的過程中更加的安全。功能許可權管控是對針對不同的角色可以進行不同的功能操作,而數據許可權管控是針對不同的角色可以查看不同的數據。這篇文章主要介紹 JeeSite 中對功能許可權的管控,也就是訪問控制許可權的使用,關於數據許可權的部分有空再接著整理。
從手冊開始
JeeSite 開源項目集成了 shiro 這個許可權控制框架,我本身不瞭解 shiro ,但是不瞭解 shiro 是不影響使用的 JeeSite 的功能許可權管理的。先來看看 JeeSite 手冊對許可權這部分的介紹,引用手冊內容如下圖。
從手冊上看, JeeSite 的功能許可權控制需要進行四個方面的設置,分別是給 Controller 的方法添加許可權標誌,在菜單中設置許可權標識,在代碼中判斷許可權,當然還有是在視圖中添加許可權標簽。
給方法添加許可權標誌
給方法添加標誌這部分是至關重要的一步,它標志著訪問該 Controller 方法時的許可權,一般在使用代碼生成工具時,預設會生成 view 和 edit 兩種許可權,分別對應著“查看”和“修改”的許可權。在 Controller 中完全可以自己定義其他類型的許可權,比如 import 、 export 等。
菜單中設置許可權標誌
這一步是在添加菜單時完成的。添加菜單的頁面如下:
在添加菜單部分有四個比較重要的內容:
- 名稱:即菜單的名稱;
- 鏈接:菜單對應的 Controller ;
- 可見:該項菜單是否可以見;
- 許可權標識:這個許可權標識就是在 Controller 中定義的方法許可權標誌;
一般在維護的時候,需要把菜單和許可權分開,分開以後才能進行具體的許可權賦值。如果是維護菜單的話,那麼就維護“名稱”和“鏈接”,然後“可見”為“顯示”。添加好菜單後,在菜單的下級維護許可權。維護許可權的時候,需要維護“名稱”和“許可權標識”,不需要維護“鏈接”,“可見”維護為“隱藏”。維護完以後的菜單列表如下圖所示。
判斷許可權和視圖中控制按鈕
在視圖中加入許可權控制的判斷,就會顯示時會根據許可權顯示相關的內容,比如手冊中的例子,代碼如下:
1 <shiro:hasPermission name="sys:user:edit"> 2 <input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/> 3 </shiro:hasPermission> 4 <!-- 任何一個符合條件的許可權 --> 5 <shiro:hasAnyPermissions name="sys:user:view, sys:user:edit,"> 6 <input id="btnSubmit" class="btn btn-primary" type="submit" value="返 回"/> 7 </shiro: hasAnyPermissions>
上面的第一段例子代碼會判斷用戶是否具備 “ sys:user:edit ” 的許可權,如果具備這個許可權,則會顯示“保存”按鈕,如果不具備這個許可權是不會顯示“保存”按鈕的。
第二段許可權,則是任何一個符合條件的許可權被滿足,都會顯示“返回”按鈕。
一般在視圖上控制好許可權,在代碼中是不需要進行判斷的。如果視圖沒有控制的話,那麼在代碼中進行一下判斷。
對於一個剛開始接觸 Java 的新手,對於 JeeSite 的應用就掌握到這個程度了,有不對的,有問題的,歡迎討論!