咨詢
交流群
電話

03-二次開發教程-菜單與權限-v8

文檔 > 二次開發 2018-03-13 11:40 閱讀

后臺菜單和權限是插件(二次)開發的最核心的部分,也是最難做到無縫整合的部分。大部分系統會將菜單信息保存到數據庫中,這對升級和維護帶來一定的困難。

Jspxcms的菜單和權限信息存放在配置中,方便管理、維護和升級;只需要在一個配置文件中設置好,即可以無縫整合系統的菜單、權限、賦權等問題,無需另外修改代碼和頁面。

開發時可以根據需要,將新功能菜單加到任意的一級菜單下的任意位置,也可以自己新增一級菜單,新增的一級菜單也可以放在任何你想要的位置上。

菜單介紹

后臺菜單分為兩級,如內容管理、文件管理、用戶權限、系統管理為一級菜單,文檔管理、欄目管理、用戶管理、角色管理為二級菜單。

后臺菜單目前不支持三級。

配置文件

/src/main/resources/conf/plugin/plug/menu.yml

菜單配置文件支持通配加載,符合classpath:conf/**/menu*.yml這個規則的配置文件都會加載,系統中其它菜單的配置位于/src/main/resources/conf/menu.yml。

加載菜單配置文件由com.jspxcms.core.MenuConfigappContext.getResources("classpath:conf/**/menu*.yml");代碼加載。

一級菜單配置

/src/main/resources/conf/menu.yml文件中有一級菜單的配置。

600:
  name: navigation.plug
  icon: fa fa-plug
  perms: nav_plug
  • 600: 菜單序號,決定一級菜單排列的位置。比如序號500的菜單會排在600的前面,而序號550則會排在500與600之間。注意:這個序號在所有的菜單配置文件中必須是唯一的,如果已經有600序號的菜單,則不能再建一個同樣序號的菜單,可以為610或者558。
  • name: navigation.plug 菜單名稱。其中navigation.plug是國際化代碼,在/src/main/resources/messages目錄下的文件里有這個代碼對應的中文。也可以直接寫中文,如name: 我的菜單。
  • icon: fa fa-plug 菜單圖標。其中fa fa-plug是圖標樣式,請參考:https://getbootstrap.com/docs/3.3/components/。
  • perms: nav_plug 權限值。一級菜單通常都是虛擬菜單,點擊后只是展開二級菜單,不需要訪問后臺,所以權限值可以隨意定義,只要不和原有權限值重復即可。

二級菜單配置

/src/main/resources/conf/plugin/plug/menu.yml文件中有二級菜單的配置。

600-1000:
  name: resume.management
  url: plug/resume/list.do
  perms: plug:resume:list
  ops:
    - create@plug:resume:create
    - copy@plug:resume:copy
    - edit@plug:resume:edit
    - save@plug:resume:save
    - update@plug:resume:update
    - delete@plug:resume:delete
600-1100:
  name: weixinMenu.management
  url: plug/weixin_menu/list.do
  perms: plug:weixin_menu:list
  ops:
    - save@plug:weixin_menu:save
  • 600-1000 菜單序號。此處為兩級,所以是二級菜單,其中600是一級菜單的序號,代表著二級菜單是屬于序號為600的一級菜單之下。1000是二級菜單的序號,決定二級菜單排列的位置,這個序號在所屬的一級菜單里必須是唯一的。注意:對應的一級菜單必須存在。
  • name: resume.management 菜單名稱。與一級菜單相同。
  • url: plug/resume/list.do 菜單URL地址。點擊這個菜單所訪問的url。這是一個相對路徑,以/cmscp/為基礎路徑,所以這個地址實際上是/cmscp/plug/resume/list.do。這個url地址必須要有相應Controller,否則點擊這個菜單會找不到頁面。如@RequestMapping("/plug/resume")@RequestMapping("list.do")。
  • perms: plug:resume:list 菜單權限值。這個權限值必須要對應url的Controller方法的@RequiresPermissions("plug:resume:list")一致。
  • ops: 按鈕權限列表。一個模塊除了點擊菜單的權限,還有其他權限,比如點擊簡歷管理這個菜單鏈接后,里面還有新增簡歷、修改簡歷、刪除簡歷等功能按鈕。
  • create@plug:resume:create 按鈕權限值。create是國際化代碼。plug:resume:create是權限值,必須與Controller方法中的@RequiresPermissions("plug:resume:create")一致。也可以直接用中文,如新增@plug:resume:create。

對應的Java代碼

package com.jspxcms.plug.web.back;

@Controller
@RequestMapping("/plug/resume")
public class ResumeController {

    @RequiresPermissions("plug:resume:list")
    @RequestMapping("list.do")
    public String list(...) {
        ...
        return "plug/resume/resume_list";
    }

    @RequiresPermissions("plug:resume:create")
    @RequestMapping("create.do")
    public String create(...) {
        ...
        return "plug/resume/resume_form";
    }

    ...

}

菜單配置與權限管理

按照上面步驟配置菜單之后,角色管理的功能權限樹會讀取配置文件,無需修改角色管理頁面及代碼。

南丹县| 壶关县| 穆棱市| 沛县| 石狮市| 河源市| 德昌县| 柘城县| 修水县| 西乌珠穆沁旗| 高雄市| 饶阳县| 招远市| 旌德县| 海宁市| 饶阳县| 武乡县| 高邮市| 神农架林区| 东丰县| 澄江县| 基隆市| 三原县| 文化| 安岳县| 永福县| 抚顺县| 冀州市| 额济纳旗| 永昌县| 渭源县| 宁强县| 郓城县| 阿巴嘎旗| 繁峙县| 宣恩县| 呈贡县| 富顺县| 许昌县| 绍兴市| 芦山县|