翻譯|行業資訊|編輯:龔雪|2024-03-12 15:20:57.010|閱讀 83 次
概述:本文將為大家介紹界面開發框架DevExpress XAF在即將發布的v24.1版本中的一系列新功能,主要涉及跨平臺.NET應用UI和Web API服務,請持續關注我們獲取更多最新資訊哦~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress XAF是一款強大的現代應用程序框架,允許同時開發ASP.NET和WinForms。XAF采用模塊化設計,開發人員可以選擇內建模塊,也可以自行創建,從而以更快的速度和比開發人員當前更強有力的方式創建應用程序。
本文中的內容概述了XAF跨平臺.NET應用UI和DevExpress .NET App、Web API服務(預計發布日期:2024年6月)將發布的特性/功能。
在上文中(),我們介紹了在下一個新版(v24.1)發布周期中ASP.NET Core Blazor UI的新特性、新功能等,本文將繼續介紹安全方面的增強等。
注意:本文中列出的功能和特性說明官方當前/預計的發展計劃,此信息僅供參考之用,其中列出的功能/產品可能會更改。
DevExpress技術交流群9:909157416 歡迎一起進群討論
今天,現代XAF Blazor和WinForms應用程序與組織內部的許多外部系統集成在一起。例如,如果一個組織使用Microsoft 365, XAF應用程序通常可以在//myapps.microsoft.com/上與該組織內的許多其他應用程序一起使用。由于XAF Blazor和WinForms .NET 6+應用程序(基于XPO和EF core)支持Microsoft Entra ID和其他OAuth2提供商,組織希望/更喜歡XAF應用程序與現有系統/服務(如Microsoft Entra單點登錄(SSO))共享相同的登錄詳細信息或身份驗證cookie。在v24.1中,XAF應用程序將本地支持SSO。
換句話說,組織需要滿足以下要求:當用戶已經在組織內進行身份驗證時(例如,使用Microsoft 365), XAF應用程序必須與SSO無縫協作。目前XAF開發人員必須實現自定義解決方案來修改XAF的登錄表單和身份驗證行為以支持SSO,重要的單點登錄場景包括但不限于以下場景:
在v24.1中,您可以在XAF Blazor和WinForms應用中啟用標準ASP.NET Core身份框架功能,這些應用由.NET 6+和實體框架核心提供支持。這包括Microsoft.AspNetCore.Identity.EntityFrameworkCore和數據庫特定的身份包(如Microsoft.EntityFrameworkCore.SqlServer)的無縫集成。
如果您在XAF的解決方案向導中啟用此選項,XAF項目將生成 `public class ApplicationUser : IdentityUser { /*... * /}`以及預配置的DbContext——兩者都集成到XAF的安全系統中,用于身份驗證和授權(基于角色的訪問控制或RBAC)。XAF的RBAC(類型、記錄和字段級權限)之間的鏈接是通過通用的IdentityRole和其他EF Core數據模型類(它們是Identity數據模型的一部分)建立的,這個Identity數據模型通過EF Core映射到底層數據庫。
除了Identity模型和數據庫存儲之外,XAF客戶還將體驗到以下好處:
builder.Services.AddIdentityCore<ApplicationUser>() .AddEntityFrameworkStores<AppDbContext>() .AddApiEndpoints();
在v24.1中,具有中間層安全性的XAF WinForms應用程序(. NET 6+)將原生支持OAuth2提供者和多租戶。
正如我們在安全注意事項文檔中所描述的,使用中間層應用程序服務器,Windows桌面應用程序可以更好地滿足企業安全標準。通過我們的解決方案,EF Core或XPO開發人員可以保留他們的標準DbContext或Session,并從任何.NET客戶端(如XAF WinForms或非XAF應用程序)發起到數據存儲的遠程連接。此功能在某些環境/業務應用程序(由于安全考慮而無法維護直接數據庫連接的環境)中至關重要。
強調一點:非AF EF Core或XPO開發人員可以從我們的中間層應用服務器中受益,并使用他們的實體數據模型保留DbContext或Session。這對許多桌面.NET開發人員(WinForms、WPF、WinUI等)來說尤其重要,因為他們現在需要滿足更高的安全標準。簡而言之,這些開發人員要么需要為Windows改造/現代化他們的“胖客戶端”,要么需要使用現代Web技術和云服務從頭開始。我們的中間層安全性允許您選擇“更容易”且可能更可靠的路由,并使用中間件“替換”直接數據庫連接。查看下面的代碼片段以獲得這方面的更多信息:
var httpRemoteRepository = new HttpRemoteRepository(httpClient, typeof(EFCoreDbContext).FullName); var optionsBuilder = new DbContextOptionsBuilder<EFCoreDbContext>(); optionsBuilder.UseMiddleTier(opt => opt.UseRemoteRepository(httpRemoteRepository)); optionsBuilder.UseChangeTrackingProxies(); optionsBuilder.UseLazyLoadingProxies(); var dbContextOptions = optionsBuilder.Options; var dbContext = new EFCoreDbContext(dbContextOptions); var users = dbContext.Employees.ToList();
具有中間層安全性的XAF WinForms將在v24.1中執行得更快。
此外,現在可以從BaseObject后代中調用新的SetPropertyValueWithBypassSecurity方法來繞過內部應用程序邏輯中某些受保護屬性的安全檢查(也支持自定義基類)。
當您希望設置CreatedBy、ModifiedBy、CreatedOn、UpdatedOn等服務屬性時,這個功能對XAF開發人員尤其有價值——我們的Audit Trail和Model Difference模塊使用類似的機制進行操作。SetPropertyValueWithBypassSecurity方法可以像應用程序管理員一樣,在代碼中代表受限制/普通用戶自由地設置受保護的屬性,而無需知道管理員憑據(如服務任務的模擬)。
public override void OnSaving() { if (ObjectSpace.IsNewObject(this)) { SetPropertyValueWithBypassSecurity(nameof(CreatedBy), GetCurrentUser()); } else { SetPropertyValueWithBypassSecurity(nameof(UpdatedBy), GetCurrentUser()); SetPropertyValueWithBypassSecurity(nameof(UpdatedOn), DateTime.Now); } if (!IsRunningOnMiddleTierServer()) { // ... } }
對于許多XAFers來說,這是一個長期要求的選項—一個阻止從集成模式完全遷移到中間層安全的選項(因為CreateNonsecuredObjectSpace和其他解決方案不方便)。SetPropertyValueWithBypassSecurity也有一定的限制,比如調用這個方法只能從BaseObject.OnSaving內部支持(為了最好的安全性),或者被繞過的屬性不能在內部更新其他受保護的屬性,這個新選項可能將覆蓋80%的流行用例。隨著相關的性能增強,默認情況下在解決方案向導中啟用XAF WinForms應用程序中的中間層安全性之前的最后一步,希望XAF開發人員能夠發現這些新功能也足以切換到中間層安全性。
由于篇幅有限,下期繼續講解,請持續關注查看最新產品資訊哦~
更多DevExpress線上公開課、中文教程資訊請上中文網獲取
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網