界面开发框架DevExpress XAF v24.1新版预告 - 跨平台应用UI(二)

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。

本文中的内容概述了XAF跨平台.NET应用UI和DevExpress .NET App、Web API服务(预计发布日期:2024年6月)将发布的特性/功能。

在上文中(点击这里回顾>>),我们介绍了在下一个新版(v24.1)发布周期中ASP.NET Core Blazor UI的新特性、新功能等,本文将继续介绍安全方面的增强等。

注意:本文中列出的功能和特性说明官方当前/预计的发展计划,此信息仅供参考之用,其中列出的功能/产品可能会更改。

获取DevExpressv23.2正式版下载(Q技术交流:909157416)

安全增强
单点登录(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,重要的单点登录场景包括但不限于以下场景:

  1. 如果用户没有在组织内登录,那么XAF应用程序将显示标准的OAuth2/SSO提供者登录表单(就像Teams, Word或Outlook通常为Microsoft 365所做的那样)。如果用户被管理员强制注销,那么XAF应用程序也应该显示标准的登录表单。
  2. 如果用户在组织内登录(它可以是另一个非XAF应用程序),则不会为用户显示XAF登录表单,焦点直接移动到XAF应用程序UI(通过来自组织的“应用程序仪表板”的链接或通过其他方法),XAF应用程序中的登录过程在后台自动进行(通过API调用)。在这种情况下,不应该强迫XAF用户显式地按下“Login with Microsoft”,因为SSO将按照预期“正常工作”。
  3. 如果组织内的用户在用户已经登录后需要进行额外的安全检查(例如,在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.AddIdentityCore<ApplicationUser>() .AddEntityFrameworkStores<AppDbContext>() .AddApiEndpoints();

  • 如果您已经有了使用EF Core和Identity的外部项目,那么XAF的集成也会变得容易得多。在XAF驱动的项目中添加开发人员也会更容易,因为EF Core和ASP. NET Core Identity框架被数百万的.NET开发人员所使用。
  • XAF将继续为Identity用户和角色生成其标准的登录和CRUD UI屏幕,并允许您编辑XAF对这些角色的权限。
  • 您还可以在其他数据模型中引用ApplicationUser类(例如,实现CreatedBy或ModifiedBy属性)。标准标准函数,如CurrentUserId、IsUserInRole和其他函数也将起作用。

DevExpress XAF v24.1产品图集

WinForms应用的中间层安全:支持多租户和OAuth2

在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();
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开发人员能够发现这些新功能也足以切换到中间层安全性。

由于篇幅有限,下期继续讲解,请持续关注查看最新产品资讯哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法积累】辗转相除法

【算法积累】辗转相除法&#xff0c;python实现两种 辗转相除法&#xff08;又称欧几里得算法&#xff09;减法&#xff08;不常用&#xff09;代码实现执行结果 辗转相除法代码实现执行结果 辗转相除法&#xff08;又称欧几里得算法&#xff09; 又称欧几里得算法&#xff0c…

使用helm部署clickhouse

&#xff08;作者&#xff1a;陈玓玏&#xff09; 前置条件 已安装 Kubernetes 集群&#xff1b; 已安装 Helm 包管理工具。 部署 1 添加 RadonDB ClickHouse 的 Helm 仓库 helm repo add ck https://radondb.github.io/radondb-clickhouse-kubernetes/ helm repo upd…

【算法设计】实验四回溯算法(附源代码)

这里写目录标题 一、上机目的二、上机内容与要求三、上机步骤四、上机结果1、将课本5.2节算法改为程序&#xff0c;并输入数据及进行测试&#xff1b;2、自学5.4节&#xff0c;并完成符号三角形问题。 一、上机目的 1、通过回溯法的示例程序理解回溯法的基本思想&#xff1b; …

信号处理-探索相邻数据点之间的变化和关联性的操作方法

当前值减去前一个值&#xff0c;乘上当前值与前一个值差值的绝对值 当前值减去后一个值&#xff0c;乘上当前值与后一个值差值的绝对值。 意义何在&#xff1f; 当前值减去前一个值&#xff1a;表示当前数据点与前一个数据点之间的变化量。当前值与前一个值差值的绝对值&…

Pycharm的Project Structure (项目结构)

文章目录 一、Sources二、Tests三、Exeluded四、Namespace packages五、Templates六、Resources 一、Sources 源代码根目录&#xff1a;包含项目的主要源代码&#xff0c;它会在这个目录下搜索代码&#xff0c;然后自动补全和只能提示都通过这里的代码提供。若项目运行自定义代…

luatos框架中LVGL如何使用中文字体〈二〉编写脚本设置中文字体

本节内容&#xff0c;将和大家一同学习&#xff0c;在luatos环境中&#xff0c;使用lvgl库&#xff0c;一步步的编译固件、编写脚本&#xff0c;最终实现中文字体的显示。 芯片&#xff1a;AIR101 LCD屏&#xff1a;ST7789 上一节&#xff0c;我们一同学习了&#xff0c;硬件引…

使用vue动态在列表中添加或者删除某一行

** 使用vue动态在列表中添加或者删除某一行 ** 先看一下展示的效果&#xff1a; 好了上代码&#xff1a; 样式界面&#xff1a; <template><div class"container"><h4 style"margin-left: 20px;">线路停靠站站点</h4><el-b…

无缝集成 MongoDB Relational Migrator,Tapdata 提供关系型到 MongoDB 实时迁移优化方案

在去年的 MongoDB 用户大会纽约站上&#xff0c;MongoDB 正式宣布全面推出新工具 MongoDB Relational Migrator&#xff08;MongoDB RM&#xff09;&#xff0c;用以简化应用程序迁移和转换——即从传统关系型数据模型到现代的文档数据模型&#xff0c;助力组织快速提升运营效率…

数字图像处理 使用C#进行图像处理九 实现傅里叶变换

一、简述 傅立叶变换将图像分解为其正弦和余弦分量。换句话说,它将图像从空间域变换到频率域。这个想法是任何函数都可以用无限正弦函数和余弦函数之和来精确近似。傅里叶变换是实现此目的的一种方法。 网上有很多关于傅里叶变换的文章,这里就不进行赘述了,这里主要结合代码…

java中xml概述

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年&#xff0c;又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者&#xff1a; Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

element ui 中文离线文档(百度云盘下载)

一般内网开发上不了网&#xff0c;用离线版本比较方便&#xff0c;下载地址&#xff1a; https://download.csdn.net/download/li836779537/88355878?spm1001.2014.3001.5503 下载后里面有个 index.hrml 双击打开就可以用 效果如下&#xff1a;

Python程序设计基础——代码习题

1 __name__属性 import demodef main():if __name__ __main__:print(这个程序被直接运行。)elif __name__demo:print(这个程序作为模块被使用。) main()3.3 编写程序&#xff0c;生成包含1000个0~100之间的随机整数&#xff0c;并统计每个元素出现的次数。 import randomx[r…

助贷系统crm:帮助助贷机构实现高效的客户关系管理

助贷系统CRM&#xff08;客户关系管理系统&#xff09;是一种能够帮助助贷企业实现高效客户关系管理的工具&#xff0c;通过助贷系统CRM&#xff0c;助贷企业可以更好地管理企业客户信息&#xff0c;跟踪客户互动、提高客户满意度&#xff0c;从而促进业务增长。 1. 客户信息集…

vMware WorkStation创建虚拟机安装CentOS7,NAT模式配置网络

一、安装虚拟机 1、选择典型&#xff08;推荐&#xff09;配置 2、选择稍后安装操作系统 3、操作系统选择CentOS7 64位 4、虚拟机命名、选择安装位置 6、指定磁盘容量 7、指定磁盘容量 步骤&#xff1a; &#xff08;1&#xff09;、系统内存2GB &#xff08;2&#xff09;、…

linux-MDK can电机带导轨

确保接线正确&#xff0c;这个带导轨的电机需要24V的电压 $ ls /dev //查看端口是什么$ sudo slcand -o -s6 /dev/ttyACM0 can0 //将端口封装为can0 $ sudo ip link set can0 up //打开端口 按照电机说明书&#xff0c;按照需要的指令计算检验和&#xf…

FreeRTOS 的任务挂起和恢复

1. 任务挂起和恢复的 API 函数 API函数描述vTaskSuspend()挂起任务vTaskResume()恢复被挂起的任务xTaskResumeFromISR()在中断中恢复被挂起的任务 挂起&#xff1a;挂起任务类似暂停&#xff0c;可恢复&#xff1b; 删除任务&#xff0c;堆栈都给释放掉了&#xff0c;无法恢复…

计算机网络-第7章 网络安全(2)

7.5 密钥分配 7.6 互联网使用的安全协议 7.7 系统安全&#xff1a;防火墙与入侵检测

【故障电弧探测器 方案介绍】安科瑞电气火灾监控系统

什么是电弧&#xff1f; 电弧俗称‘电火花’ &#xff0c;又叫‘打火’ &#xff0c;本质是一种绝缘体被电压击穿后&#xff0c;由不导电变的导电&#xff0c;且发光发热的自然现象。 什么是故障电弧&#xff1f; 由于电气线路或设备中绝缘老化破损、电气连接松动、空气潮湿…

SpringCloud Hystrix 断路器

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第五篇&#xff0c;即介绍 Hystrix 断路器。 二、概述 2.1 分布式系统面临的问题 复杂分布式体系结构中…

TIOBE 3月编程排行榜出炉:遥遥领先,霸榜第一!

哈喽呀~又到了每个月的语言排行榜啦&#xff01; TIOBE 3月编程语言也已经公布&#xff0c;具体有啥新变化呢&#xff1f;快和我一起往下看~ Python遥遥领先&#xff0c;霸榜第一 先来看看本月排行榜top5的表现。毫无疑问&#xff0c;Python依然遥遥领先&#xff1a; Python 第…