WinForm/MIS項目開發之中按鈕級權限實踐

1、前言

     AgileEAS.NET SOA 中間件平臺是一款基於基於敏捷並行開發思想和Microsoft .Net構件(組件)開發技術而構建的一個快速開發應用平臺。用於幫助中小型軟件企業創建一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。git

     AgileEAS.NET SOA中間件平臺提供了敏捷快速開發軟件工程的最佳實踐,經過提供大量的基礎支撐功能如IOC、ORM、SOA、分佈式體系及敏捷併發開發方法所支撐的插件開發體系,以及提供了大量的實體、數據模型設計生成工具、代碼生成工具,用於幫助中小軟件開發商快速成長。程序員

     AgileEAS.NET平臺充分把握目前軟件行業快速發展的新趨勢,基於敏捷並行開發、快速適應市場這樣淳樸的軟件工程實踐,採用業界普遍使用的Microsoft .Net構件(組件)開發技術實踐了這種開發思想,幫助軟件企業實現「敏捷變化、快速適合」的目標,從而幫助軟件企業在激烈的市場競爭中贏得先機並得到更高的回報。github

2、關於按鈕級權限

     在AgileEAS.NET SOA5.0版本之中,AgileEAS.NET SOA平臺僅提供了基於模塊的權限管理體系,也沒有提供按鈕/子功能級別的權限控制體系。併發

     有不少不少的使用者基於AgileEAS.NET SOA 中間件平臺進行應用開發的過程之中都提到這個問題,咱們也給你們提供了一些解決思路和方案,可是一直沒有在平臺之中集成和實現一套標準的按鈕/子功能權限管理功能和標準的API。app

     在AgileEAS.NET SOA5.0版本發佈以前咱們實現一套按鈕/子功能級別的權限控制體系,提供了一個用於實現按鈕級權限管理功能的管理模塊及一給API接口。分佈式

3、按鈕級權限管理

     在AgileEAS.NET SOA5.0版本之中,AgileEAS.NET SOA平臺僅提供了基於模塊的權限管理體系,也沒有提供按鈕/子功能級別的權限控制體系。函數

     使用管理員登陸AgileEAS.NET SOA平臺WinClient容器,就會在系統管理導航組之中看到有一個「函數管理」模塊:工具

K[NB%4~6JG(QRD4U`AC{}2I

     列表之中是全部的按鈕權限項目,存儲在模塊信息表之中,若是須要增長一個新的「按鈕/函數/權限項目」,使用添加功能,打開添加界面:網站

_KR7294@PL~6P1F~7Y4@WZ7

     以上界面的操做會增長一個名稱爲「藥品字典打印」字的按鈕級別的權限,其權限ID爲「6a185217-34de-4fe7-9ed5-c2cc49ba432c」。ui

     雙擊選中的按鈕級別的權限項,會打開「函數屬性」對話框能夠針對此函數/權限項進行受權:

@[X])){NZARHI_PI9N}]LO3

 

     受權方式同模塊級權限如出一轍,你也能夠經過帳號管理和角色管理模塊進行受權。

4、API及如何使用

     光提供一個管理功能仍是不夠的,還必需要提供一組API以供開發人員使用,AgileEAS.NET SOA中間件平臺在應用程序對象(EAS.Application類的單例對象EAS.Application.Instance)上定義一個驗證權限的API:

   1: //
   2: // 摘要:
   3: //     驗證權限,驗證當前系統登陸人員是否具備某個構件的訪問權限。
   4: //
   5: // 參數:
   6: //   component:
   7: //     構件Guid。
   8: //
   9: // 返回結果:
  10: //     驗證經過返回True,不然返回False。
  11: bool Demand(Guid component);

     Demand方法須要傳入按鈕級別權限項/函數的定義ID,其餘由交由平臺完成。

     接下來咱們在DrugShop案例案例之中的藥品字典模塊之中增長對「打印」按鈕的權限控制,Visual Studio打開DrugShop解決方案打開「藥品字典」模塊插件的代碼文件DrugDictList.cs,修改打印按鈕的事件以下:

   1: private void tsbPrint_Click(object sender, EventArgs e)
   2: {
   3:     //驗證按鈕級別權限。
   4:     if (!EAS.Application.Instance.Demand(new Guid("6a185217-34de-4fe7-9ed5-c2cc49ba432c"))) 
   5:         return;
   6:  
   7:     if (this.dictList != null)
   8:     {
   9:         EAS.GReport.Controls.PrintViewDialog ViewDialog = new EAS.GReport.Controls.PrintViewDialog();
  10:         ViewDialog.ReportID = new Guid("F29C4C91-0791-4116-BE26-3A2A88F30A2A");
  11:         ViewDialog.DataObject = this.dictList;
  12:         ViewDialog.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  13:         ViewDialog.WindowState = System.Windows.Forms.FormWindowState.Maximized;
  14:         ViewDialog.ShowDialog();
  15:     }
  16: }

     這樣就完成了對本權限項的調用驗證。

4、執行驗證

     咱們編譯而且啓動DrugShop.Main.exe,使用0001密碼sa登陸,打開「藥品字典」模塊,查詢數據以後點擊「打印」按鈕:

image

     0001不具備這個按鈕級權限項的權限,因此會提供沒有權限,咱們換0002登陸而且執行一樣的操做:

image

     OK,能夠正常使用了,按鈕級權限演示完成。

     DrugShop案例之中同步提供了本例子的權限定義和調用代碼,請你們經過AgileEAS.NET SOA中間件官方網站最新下載欄目進行下載。

5、聯繫咱們

     爲完善、改進和推廣AgileEAS.NET而成立了敏捷軟件工程實驗室,是一家研究、推廣和發展新技術,並致力於提供具備自主知識產權的業務基礎平臺軟件,以及基於業務基礎平臺開發的管理軟件的專業軟件提供商。主要業務是爲客戶提供軟件企業研發管理解決方案、企業管理軟件開發,以及相關的技術支持,管理及技術諮詢與培訓業務。

     AgileEAS.NET SOA中間件平臺自2004年秋呱呱落地一來,我就一直在逐步完善和改進,也被應用於保險、醫療、電子商務、房地產、鐵路、教育等多個應用,但一直都是以我我的在推廣,2010年由於我辭職休息,我就想到把AgileEAS.NET推向市場,讓更多的人使用。

     個人技術團隊成員都是合做多年的老朋友,由於這個平臺是免費的,因此也沒有什麼收入,都是由程序員的那種理想與信念堅持,在此我感謝一塊兒奮鬥的朋友。

團隊網站:http://www.agilelab.cn

AgileEAS.NET網站:http://www.agileeas.net

官方博客:http://eastjade.cnblogs.com

github:https://github.com/agilelab/eas

QQ:47920381,AgileEAS.NET

QQ羣:113723486(AgileEAS SOA 平臺)/上限1000人

199463175(AgileEAS SOA 交流)/上限1000人

212867943(AgileEAS.NET研究)/上限500人

147168308(AgileEAS.NET應用)/上限500人

172060626(深度AgileEAS.NET平臺)/上限500人

116773358(AgileEAS.NET 平臺)/上限500人

125643764(AgileEAS.NET探討)/上限500人

193486983(AgileEAS.NET 平臺)/上限500人

郵件:james@agilelab.cn,mail.james@qq.com,

電話:18629261335。

相關文章
相關標籤/搜索