界面开发框架DevExpress XAF v24.1新版预告 - 跨平台应用UI(二)
DevExpress XAF是一款强大的现代应用程序框架允许同时开发ASP.NET和WinForms。XAF采用模块化设计开发人员可以选择内建模块也可以自行创建从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。本文中的内容概述了XAF跨平台.NET应用UI和DevExpress .NET App、Web API服务(预计发布日期:2024年6月)将发布的特性/功能。DevExpress新旧版本帮助文档下载可进QQ qun获取169725316在上文中我们介绍了在下一个新版v24.1发布周期中ASP.NET Core Blazor UI的新特性、新功能等本文将继续介绍安全方面的增强等。注意本文中列出的功能和特性说明官方当前/预计的发展计划此信息仅供参考之用其中列出的功能/产品可能会更改。安全增强单点登录(SSO)支持今天现代XAF Blazor和WinForms应用程序与组织内部的许多外部系统集成在一起。例如如果一个组织使用Microsoft 365, XAF应用程序通常可以在https://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重要的单点登录场景包括但不限于以下场景如果用户没有在组织内登录那么XAF应用程序将显示标准的OAuth2/SSO提供者登录表单(就像Teams, Word或Outlook通常为Microsoft 365所做的那样)。如果用户被管理员强制注销那么XAF应用程序也应该显示标准的登录表单。如果用户在组织内登录(它可以是另一个非XAF应用程序)则不会为用户显示XAF登录表单焦点直接移动到XAF应用程序UI(通过来自组织的“应用程序仪表板”的链接或通过其他方法)XAF应用程序中的登录过程在后台自动进行(通过API调用)。在这种情况下不应该强迫XAF用户显式地按下“Login with Microsoft”因为SSO将按照预期“正常工作”。如果组织内的用户在用户已经登录后需要进行额外的安全检查(例如在30-60天后通过电话重新确认MFA信息)那么XAF应用程序必须提供一个清晰易懂的标准OAuth2提供者UI并禁止XAF UI内的任何操作。例如Teams、Word或Outlook会显示模态对话框来重新确认你的登录细节然后用户才能再次访问和使用这些Microsoft 365应用程序。支持ASP.NET Core身份和其他外部权限提供程序和存储在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客户还将体验到以下好处自动访问所有标准身份特性如单点登录(SSO)、注册新用户的端点、恢复密码和其他Microsoft实现(或未来的.NET实现)。特定于XAF的权限被序列化为JSON并存储在与identityrole相关的表中。对于高级场景XAF开发人员可以实现自定义权限提供程序例如与外部服务而不是Identity数据库同步用户权限和角色(从技术上讲您需要在XAF应用程序和外部端点之间传递JSON)。XAF项目中的安全配置代码的数量也将被最小builder.Services.AddIdentityCoreApplicationUser() .AddEntityFrameworkStoresAppDbContext() .AddApiEndpoints();如果您已经有了使用EF Core和Identity的外部项目那么XAF的集成也会变得容易得多。在XAF驱动的项目中添加开发人员也会更容易因为EF Core和ASP. NET Core Identity框架被数百万的.NET开发人员所使用。XAF将继续为Identity用户和角色生成其标准的登录和CRUD UI屏幕并允许您编辑XAF对这些角色的权限。您还可以在其他数据模型中引用ApplicationUser类(例如实现CreatedBy或ModifiedBy属性)。标准标准函数如CurrentUserId、IsUserInRole和其他函数也将起作用。WinForms应用的中间层安全支持多租户和OAuth2在v24.1中具有中间层安全性的XAF WinForms应用程序(. NET 6)将原生支持OAuth2提供者和多租户。正如我们在安全注意事项文档中所描述的使用中间层应用程序服务器Windows桌面应用程序可以更好地满足企业安全标准。通过我们的解决方案EF Core或XPO开发人员可以保留他们的标准DbContext或Session并从任何.NET客户端(如XAF WinForms或非XA应用程序)发起到数据存储的远程连接。此功能在某些环境/业务应用程序(由于安全考虑而无法维护直接数据库连接的环境)中至关重要。强调一点非AF EF Core或XPO开发人员可以从我们的中间层应用服务器中受益并使用他们的实体数据模型保留DbContext或Session。这对许多桌面.NET开发人员WinForms、WPF、WinUI等来说尤其重要因为他们现在需要满足更高的安全标准。简而言之这些开发人员要么需要为Windows改造/现代化他们的“胖客户端”要么需要使用现代Web技术和云服务从头开始。我们的中间层安全性允许您选择“更容易”且可能更可靠的路由并使用中间件“替换”直接数据库连接。查看下面的代码片段以获得这方面的更多信息var httpRemoteRepository new HttpRemoteRepository(httpClient, typeof(EFCoreDbContext).FullName); var optionsBuilder new DbContextOptionsBuilderEFCoreDbContext(); optionsBuilder.UseMiddleTier(opt opt.UseRemoteRepository(httpRemoteRepository)); optionsBuilder.UseChangeTrackingProxies(); optionsBuilder.UseLazyLoadingProxies(); var dbContextOptions optionsBuilder.Options; var dbContext new EFCoreDbContext(dbContextOptions); var users dbContext.Employees.ToList();WinForms应用程序的中间层安全性增强性能和可用性具有中间层安全性的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开发人员能够发现这些新功能也足以切换到中间层安全性。由于篇幅有限下期继续讲解请持续关注查看最新产品资讯哦~

相关新闻

全链路智能获客系统指南:中线云AI外呼系统的技术架构与企业落地实践

全链路智能获客系统指南:中线云AI外呼系统的技术架构与企业落地实践

在数字化营销内卷加剧的今天,企业获客成本持续攀升,传统 “人海战术” 式电销早已难以为继。当流量红利见顶、通信监管趋严,“精准获客 合规触达 高效转化” 成为企业增长的核心突破口,而 AI 技术的深度渗透,正重构电…

2026/10/19 9:51:41 阅读更多 →
嵌入式系统时钟配置实战:PLLC寄存器详解与TI DSP时钟管理

嵌入式系统时钟配置实战:PLLC寄存器详解与TI DSP时钟管理

1. 项目概述与PLLC核心价值在嵌入式系统开发,尤其是基于德州仪器(TI)C6000系列DSP或类似复杂SoC的项目中,时钟系统是整个芯片的“心跳”。它决定了处理器内核、片上总线、DMA控制器以及所有外设的工作节奏与性能上限。很多工程师在…

2026/10/20 8:44:11 阅读更多 →
TI C6000 DSP电源管理:PSC状态转换与中断处理实战详解

TI C6000 DSP电源管理:PSC状态转换与中断处理实战详解

1. 项目概述与核心价值在嵌入式开发,尤其是电池供电的物联网设备、便携式医疗仪器或工业手持终端里,我们最常挂在嘴边的一个词就是“功耗”。客户总希望设备能跑得更快,但同时待机时间要更长,这听起来像是个矛盾的要求。实际上&am…

2026/10/19 19:38:56 阅读更多 →

最新新闻

Flink EOS实战:整合MySQL验证2PC两阶段提交

Flink EOS实战:整合MySQL验证2PC两阶段提交

好的,这篇是围绕“Flink EOS——整合MySQL验证2PC”展开的技术实战文章。我会以流处理工程师视角,从“为什么需要精确一次”“Flink如何实现分布式快照”“MySQL XA事务如何作为2PC参与者”“两者如何打通”“真实排查经历”“性能与配置”“实战模板与总…

2026/10/20 14:01:04 阅读更多 →
PyTorch深度学习入门指南:从环境搭建到模型训练全流程

PyTorch深度学习入门指南:从环境搭建到模型训练全流程

1. 从零上手 PyTorch:为什么它是深度学习入门的首选框架如果你刚开始接触深度学习,或者已经用过其他框架但想转到 PyTorch,大概率会遇到一个很现实的问题:到底该从哪儿下手?网上教程一大堆,但要么是纯理论推…

2026/10/20 14:01:04 阅读更多 →
struct-to-graphql:Go结构体生成Mutation实践

struct-to-graphql:Go结构体生成Mutation实践

一直觉得GraphQL的Mutation是后端开发里最磨人的活之一。Query那边你用Go结构体写着写着还能靠工具省点力,一到Mutation就只能手动拼接SDL字符串、手写input类型、再给每个字段写resolver,结构体改了字段还容易漏同步,上线后又多一堆字段映射…

2026/10/20 14:01:04 阅读更多 →
Yakit指纹识别实战:从HTTP响应头到TCP协议栈锁定真实服务

Yakit指纹识别实战:从HTTP响应头到TCP协议栈锁定真实服务

前阵子给一个客户做资产梳理,扫到一台对外的Web服务。HTTP响应头里清清楚楚写着Server: nginx/1.18.0,连版本号都有,看起来没什么可疑的。但同网段另一台机器上,同样的代码部署,响应头却变成了Server: nginx&#xff0…

2026/10/20 14:01:04 阅读更多 →
ESP32芯片选型与ESPHome实战避坑指南

ESP32芯片选型与ESPHome实战避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 14:01:04 阅读更多 →
SecureCRT免安装版配置指南:离线串口调试与SSH便携部署

SecureCRT免安装版配置指南:离线串口调试与SSH便携部署

简介:本资源为SecureCRT绿色便携版免安装包,面向系统管理员、运维工程师及开发人员,解决多平台快速部署安全终端连接工具的需求,尤其适用于需在不同电脑间频繁切换、无管理员权限或追求轻量使用的场景。压缩包共137个文件&#xf…

2026/10/20 14:00:00 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →