權限驗證包含認證與授權兩部分,用戶登錄屬于認證的問題,驗證當前用戶是否具有指定功能的權限屬于授權的問題, IBeamMDAA 已集成了這兩部分的功能,我們只需在適當的時候使用即可。
?????? 權限驗證與業務對象緊密聯系,不能單獨談論,比如:產品信息的管理可能有:查詢、增加、編輯、刪除等功能,應對當前用戶是否有權限操作產品實例作出決斷,代碼如下:
btnAdd.Enabled = _ProductsCategory != null && !_ProductsCategory.IsNew && _ProductsList != null && Products .CanAdd();
btnDelete.Enabled = _Products != null && _Products.CanDelete();
nameDataGridViewTextBoxColumn.ReadOnly = _Products == null || !_Products.CanEdit();
?
另外,添加、編輯、查詢 這三種操作對于權限驗證其實是一種權限,原因為:有添加 產品的權限,按邏輯推理應該具有 編輯 產品的權限,而要編輯某一產品之前,首先要通過查詢后找到產品才能編輯,查詢是編輯的必要條件,因此,歸為一種功能權限,刪除同編輯同理,首先也必須先查詢到對象,因此在實際的系統設計中,不對查詢做特別的功能定義,道理就是這樣。
?????? 在設計并注冊功能時應結合業務邏輯的實際需要設置,不是教條的設置:查詢、添加、編輯、刪除、擴展 1 、擴展 2 、擴展 3 等,這種做法在 IBeamMDAA 中是嚴格禁止的。
?
下面我們看一看產品的這些方法的定義:
public static bool CanAdd()
?? {
????? return Csla. ApplicationContext .User.IsAllowed( ACPLID .FunAddProducts);
?? }
public bool CanEdit()
??? {
??????? if ( this .IsNew || this .IsDirty)
??????? { // 與業務對象當前狀態相關的判斷,當前對象正被用戶修改
?????????? return true ;
??????? }
??????? if (HasOrderItem || HasInventoryItem || HasPickListItem || HasInventoryCheckItem)
??????? { // 與業務邏輯相關的判斷
?????????? return false ;
??????? }
??????? return Csla. ApplicationContext .User.IsAllowed( ACPLID .FunAddProducts);
??? }
public bool CanDelete()
?? ?{
?????? if ( this .IsNew)
?????? { // 與業務對象當前狀態相關的判斷
????????? return true ;
?????? }
?????? if (HasOrderItem || HasPickListItem || HasInventoryItem || HasInventoryCheckItem)
?????? { // 與業務邏輯相關的判斷
????????? return false ;
?????? }
?????? if (!Csla. ApplicationContext .User.IsAllowed( ACPLID .FunDeleteProducts))
?????? {
????????? return false ;
?????? }
????????????? // 在服務器上判斷,為提高性能、減少服務器調用往返將這部分代碼注釋
?????? //CanDeleteCommand result = DataPortal.Execute<CanDeleteCommand>(new CanDeleteCommand(this));
?????? //return result.Success;
?????? return true ;
??? }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
