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