編寫操作頁面,添加zbutton,通過按鈕的priv屬性指向權限項ID來完成對各按鈕的操作權限設置。

  代碼示例:

  <z:toolbar>

  <z:button onClick="add_l();" theme="flat" priv="LinkManage.Add"><img src="../icons/icon003a2.png" /><z:lang id="Links.LinksJSP.NewLinkGroupButtonName">新建分組</z:lang></z:button>

  <z:button onClick="edit_l();" theme="flat" priv="LinkManage.Edit"><img src="../icons/icon003a4.png" /><z:lang id="Links.LinksJSP.ModifyGroupButtonName">修改分組</z:lang></z:button> 

  <z:button onClick="del_l();" theme="flat" priv="LinkManage.Delete"><img src="../icons/icon003a3.png" /><z:lang id="Links.LinkListJSP.DelButtomName">刪除</z:lang></z:button>

  </z:toolbar>

  

  設置用戶擁有的操作權限

1_副本

 

  界面顯示效果

  通過priv設置了權限的按鈕,如果對應的用戶沒有相應的操作權限,按鈕會灰掉不可用。

  對于一些無需通過按鈕事件,就能直接調用后臺方法的情況(例如頁面信息初始化,綁定列表信息等),則可以通過對后臺方法增加@Priv注解,控制用戶對后臺方法的調用權限。

1 頁面代碼中

  <z:datagrid id="linkdg1" method="Link.getLinkGroupGrid" size="15">

  <table width="100%" cellpadding="2" cellspacing="0" class="z-datagrid">

  <tr ztype="head" class="dataTableHead">

  <td width="10%" ztype="selector" field="id"> </td>

  <td width="50%"><z:lang id="Links.LinksJSP.Name">名稱</z:lang></td>

  <td width="40%"><z:lang id="Links.LinkGroupDialogJSP.LinkGroupCode">鏈接分類別名</z:lang></td>

  </tr>

  <tr onDblClick="edit_l();" onClick="showLinkList('${ID}');" class1="dg_tr_odd" class2="dg_tr_even">

  <td> </td>

  <td>${Name}</td>

  <td>${Code}</td>

  </tr>

  <tr ztype="pagebar">

  <td colspan="4">${PageBar}</td>

  </tr>

  </table>

  </z:datagrid>

  

2 JAVA代碼中

  在java代碼中,有兩種使用權限的方式,“注解方式”和“代碼塊方式”,如下示例:

  @Priv(LinkPriv.MenuID) // 1、使用注解方式

  public void getLinkGroupGrid(DataGridAction dga) {

  long siteID = SiteBL.getCurrentSite();

  // 2、使用java代碼方式

  // 獲取當前用戶權限

  Privilege priv = PrivBL.getCurrentPrivilege(Privilege.OwnerType_User, User.getCurrent().getUserName());

  // 判斷當前用戶是否有添加權限

  if (priv.hasPriv(SitePrivService.Prefix + siteID)) {

  QueryBuilder qb = new QueryBuilder("select * from ZCLinkGroup where SiteID=? ", siteID);

  String name = dga.getParam("SearchContent");

  if (StringUtil.isNotEmpty(name)) {

  qb.append(" and name like ?", "%" + name.trim() + "%");

  }

  qb.append(" ORDER BY ADDTIME DESC");

  dga.setTotal(qb);

  DataTable dt = qb.executePagedDataTable(dga.getPageSize(), dga.getPageIndex());

  dga.bindData(dt);

  }

  }

  

  如果用戶擁有后臺方法標注的操作權限,就能順利的調用后臺方法,否則就會提示操作權限不足:

  此外,系統中還有些界面在多個不同菜單下都會被調用,因此界面上的操作按鈕需要多個菜單下的權限項同時控制。若單純在按鈕的priv屬性里面通過||、&&等邏輯操作符連接多個權限項仍然不能完全正確的控制按鈕的操作權限,則可考慮通過js代碼Application.hasPriv()判斷當前用戶是否擁有相應的操作權限來控制控件的顯示隱藏等屬性以實現對用戶操作權限的控制。

 

3 JavaScript中

  function checkPriv(){

  $('#sitePriv_form1').enable();

  $('#sitePriv_toolbar1').enable();

  <z:if condition="${Type=='B'}">

  if(!Application.hasPriv("Platform.Branch.SetPrivRange")){

  $('#sitePriv_form1').disable();

  $('#sitePriv_toolbar1').disable();

  }

  </z:if>

  <z:if condition="${Type=='U'}">

  if(!Application.hasPriv("Platform.User.SetPriv")){

  $('#sitePriv_form1').disable();

  $('#sitePriv_toolbar1').disable();

  }

  </z:if>

  <z:if condition="${Type=='R'}">

  if(!Application.hasPriv("Platform.Role.SetPriv")){

  $('#sitePriv_form1').disable();

  $('#sitePriv_toolbar1').disable();

  }

  </z:if>

  }