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

    ...

}

菜单配置与权限管理

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

QQ咨询
电话
微信
微信扫码咨询