咨询
交流群
电话

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";
        }
    
        ...
    
    }
    

    菜单配置与权限管理

    按照上面步骤配置菜单之后,角色管理的功能权限树会读取配置文件,无需修改角色管理页面及代码。