程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 信息系統開發平台OpenExpressApp - 功能權限

信息系統開發平台OpenExpressApp - 功能權限

編輯:關於.NET

在《信息系統開發平台OpenExpressApp - 用戶權限模塊設計》中對RBAC以及在OEA中的涉及進行了簡要介紹,上篇《信息系統開發平台OpenExpressApp - 用戶管理》介紹了基本的用戶管理,本篇繼續講解基於用戶的功能權限管理,下一篇介紹數據權限。

部門管理

部門相當於組織機構,目前只是簡單的實現了最基本的一種模式。部門下面掛接崗位,這是部門+崗位=角色,角色下掛接人和功能權限,後面將增加數據權限。以下為權限相關的類圖:

其中,OrgPisitionOperation為角色的功能權限對象,功能對象Operation引用了CommandBase,所以OEA的功能權限中顯示可管理的功能是所有的Command,包括toolbar上的以及右鍵菜單上的命令,具體實現就不說了,大家以後可以去看具體代碼。

功能權限

PBS模板界面如下圖所示:

在【功能權限】顯示如下,左邊會列出系統所有模塊,右邊列出的是每個模塊下的所有可控制的對象,在根對象會多出一個【打開模塊】內置權限,後一小節會講一下:

這些功能都是我們編寫的Command以及OEA內置的Command,也就是在界面能夠看到的按鈕、菜單等都可以控制。目前還不提供快捷方式設置,如設置可更改,則自動把添加、添加子等一並修改。

當設置後,再次登錄時,不允許操作的功能,AutoUI不會自動生成這些命令。

private static void CreateCommandsForToolBar(ToolBar toolbar, Type boType, ObjectView view, BoInfoOperationList commands)
     {
        ......
       for (int i = 0, c = commands.Count; i < c; i++)
       {
         var command = commands[i].Operation.Command;
         //考慮權限
         if (!(Csla.ApplicationContext.User.Identity as OEAIdentity).HavePermissionOnOperation
             (boInfo.Id, new Guid(command.Id)))
           continue;

打開模塊權限

登錄系統時,系統需要根據當前用戶來生成模塊列表。第一張圖為所有功能列表,在第二張圖表示的【部門管理】的【功能權限】中對業務對象去除了【打開模塊】功能時,再次登錄後看到圖三模塊列表。

//獲取模塊列表數據源
       IList<BusinessObjectInfo> modules = new List<BusinessObjectInfo>();
       if (Csla.ApplicationContext.User.Identity.IsAuthenticated)
       {
         foreach (var item in ApplicationModel.Modules)
         {
           if ((Csla.ApplicationContext.User.Identity as OEAIdentity).HavePermissionOnOperation
               (item.Id, new Guid(CommandNames.OpenModule)))
             modules.Add(item);
         }
       }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved