分权限管理的目的:规划用户的操作权限,使用户只能操作他权力范围内的内容。

1 新建菜单

  打开插件对应的.plugin文件——点击界面下方的Menus选项卡——在打开的Menus from Plugin界面中,添加菜单。

1

  菜单详细信息说明:

  ID:菜单ID;

  Parent Menu:父级菜单ID;

  Name:菜单名称;

  URL:点击菜单要跳转到的页面;

  Order:菜单序号,自动生成;

  Type:菜单类型:Backend表示系统后台菜单;

  Frontend表示系统前台菜单;

  Icon:菜单图标;

  Description:菜单描述。

2

2 注册菜单权限

  编写权限类

        1)申明静态常量,存储对应菜单的ID(新建菜单时,ID项对应的值),并在构造方法中用super调用父类的显式构造方法AbstractMenuPriv(String menuID, String memo)完成初始化。

public class LinkPriv extends AbstractMenuPriv {

public static final String MenuID = "LinkManage";

public LinkPriv() {

super(MenuID, null);

    }

}

  

  2)申明多个静态常量,分别存储各操作类型对应的权限项的ID(需将菜单ID作为权限项ID的前缀)。在构造方法中通过addItem(String itemID, String itemName)方法添加权限项。

public class LinkPriv extends AbstractMenuPriv {

public static final String MenuID = "LinkManage";

public static final String Add = MenuID + ".Add";

public static final String Edit = MenuID + ".Edit";

public static final String Delete = MenuID + ".Delete";

public LinkPriv() {

super(MenuID, null);

addItem(Add, "@{Common.Add}");

addItem(Edit, "@{Common.Edit}");

addItem(Delete, "@{Common.Delete}");

}

  }

  

  向菜单权限扩展服务MenuPrivService注册权限项

3

  注册后的菜单权限项会显示在系统管理的菜单权限管理界面

4

  若菜单下没有注册相关的权限项,需要显示上图统计分析下类似的备注信息时,可以在调用父类的构造方法初始化时,通过第二个参数进行设置。

  代码示例:

public class AnalysisPriv extends AbstractMenuPriv {

public static final String MenuID = "MainMenus.Analysis";

public AnalysisPriv() {

super(MenuID, "@{Platform.Menu.NoPriv}");

}

  }