2022-07-26官网公布ABP 6.0.0-rc.1版本,本文筛选了几个新个性进行了介绍,次要包含LeptonX Lite默认主题、OpenIddict模块,以及如何将Identity Server迁徙到OpenIddict。据ABP官网公众号介绍,ABP 6.0.0稳定版的打算公布日期为2022-09-06,具体以理论公布日期为准。

一.LeptonX Lite默认主题

  LeptonX Lite算是LeptonX Theme的一个简略实现,应用的是Razor Pages技术,而LeptonX Theme在ABP的商业版中有着残缺的实现[17]。以前在ABP的MVC启动模板中,应用的是根本主题[18],而ABP 6.0.0-rc.1把LeptonX Lite作为默认主题[19]。

1.根本主题

根本主题的样子如下:

  根本主题在应用的时候都装置了哪些包呢?次要是在Web我的项目中须要装置Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic包,同时在模块类中须要依赖AbpAspNetCoreMvcUiBasicThemeModule模块,装置npm install @abp/aspnetcore.mvc.ui.theme.basic,运行abp install-libs。在wwwroot/styles中自定义global-styles.css文件,并且把该文件配置在模块的ConfigureServices()办法中:

Configure<AbpBundlingOptions>(options =>{    options.StyleBundles.Configure(BasicThemeBundles.Styles.Global, bundle =>    {        bundle.AddFiles("/styles/global-styles.css");    });});

2.LeptonX Lite主题

  LeptonX Lite的样子如下:

LeptonX Lite主题在应用的时候和根本主题差不多,差别如下:
(1)更新或装置CLI

dotnet tool update Volo.Abp.Cli -g --version 6.0.0-rc.1dotnet tool install Volo.Abp.Cli -g --version 6.0.0-rc.1

(2)安装包

dotnet add package Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite --prerelease

阐明:务必加上这个--prerelease选项。
(3)依赖模块

[DependsOn(     // Remove BasicTheme module from DependsOn attribute-    typeof(AbpAspNetCoreMvcUiBasicThemeModule),          // Add LeptonX Lite module to DependsOn attribute+    typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule),)]

(4)配置服务

Configure<AbpBundlingOptions>(options =>{    options.StyleBundles.Configure(        // Remove following line-       BasicThemeBundles.Styles.Global,        // Add following line instead+       LeptonXLiteThemeBundles.Styles.Global        bundle =>        {            bundle.AddFiles("/global-styles.css");        }    );});

  ABP商业版的LeptonX Theme样子如下:

阐明:因为平时在开发中应用的前后端拆散形式,所以对这块不做过多介绍,理解即可。如果感兴趣,能够深刻的学习下Razor Pages、Blazor、Bootstrap、jQuery等技术。

二.OpenIddict模块

  这次ABP 6.0.0-rc.1较大的一个变动就是开始应用OpenIddict代替IDS(IdentityServer),因为IDS要免费了。ABP封装的OpenIddict模块源码构造如下:

1.将Demo我的项目运行起来

  在模块的app目录下有6个我的项目,重点关怀的是OpenIddict.Demo.Server和OpenIddict.Demo.API,前者是集成模块的ABP利用,蕴含2个clients和1个scope。后者是应用authentication认证的ASP.NET Core API利用。配置好OpenIddict.Demo.Server的appsettings.json文件,而后启动OpenIddict.Demo.Server和OpenIddict.Demo.API我的项目。https://localhost:44303/api/c...接口如下:

  OpenIddict.Demo.Server我的项目启动后,生成的数据库OpenIddict-Demo-Server如下:

2.Volo.Abp.OpenIddict模块


4个Repository别离为:

IOpenIddictApplicationRepositoryIOpenIddictScopeRepositoryIOpenIddictAuthorizationRepositoryIOpenIddictTokenRepository

4个Store别离为:

IOpenIddictApplicationStoreIOpenIddictScopeStoreIOpenIddictAuthorizationStoreIOpenIddictTokenStore

  Repository和Store的关系是什么呢?就是在Store中能够应用Repository来操作上述4种实体。从数据表上看,感觉OpenIddict绝对于IDS4还是简略的,持续深入研究OpenIddict能够参考相干资源[6]-15。
  另外讲下怎么将OpenIddict模块运行起来,因为ABP中的模块在依赖其它我的项目的时候,都应用的源码依赖,将我的项目依赖(ProjectReference)批改为包依赖(PackageReference)即可。批改后的OpenIddict模块源码下载链接[23]。

三.MAUI启动模板

  ABP 6.0.0-rc.1版本的CLI还不反对通过MAUI模板来创立我的项目,应该要到ABP 6.0.0版本了:

四.将Identity Server迁徙到OpenIddict[10]

1.OpenIddict默认受权服务

  从ABP 6.0.0版本起,在ABP的启动模板中默认应用OpenIddict作为受权服务,ABP应该会始终反对IDS的,ABP7.0将基于.NET7,如果IDS反对.NET7,那么ABP也会持续跟进的。然而ABP不会反对商业版本的Duende IDS[22]。

2.IDS迁徙OpenIddict步骤

(1)将所有Volo的软件包更新为6.x
(2)应用相应的OpenIddict.*包替换VoloIdentityServer.*包。比方,Volo.Abp.IdentityServer.DomainVolo.Abp.OpenIddict.DomainVolo.Abp.Account.Web.IdentityServerVolo.Abp.Account.Web.OpenIddict
(3)应用相应的OpenIddict模块替换所有IdentityServer模块。比方,AbpIdentityServerDomainModuleAbpOpenIddictDomainModuleAbpAccountWebIdentityServerModuleAbpAccountWebOpenIddictModule
(4)在ProjectNameDbContext类中,重命名ConfigureIdentityServerConfigureOpenIddict
(5)在UseAuthentication后,删除UseIdentityServer,增加UseAbpOpenIddictValidation
(6)在启动模块中增加如下代码:

public override void PreConfigureServices(ServiceConfigurationContext context){    PreConfigure<OpenIddictBuilder>(builder =>    {        builder.AddValidation(options =>        {            options.AddAudiences("ProjectName"); //批改为理论我的项目的名字            options.UseLocalServer();            options.UseAspNetCore();        });    });}

(7)如果我的项目不是独自的AuthServer,那么增加ForwardIdentityAuthenticationForBearer

private void ConfigureAuthentication(ServiceConfigurationContext context){    context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);}

(8)将IdentityServerDataSeedContributorDomain我的项目中删除。
(9)创立新版本的我的项目,并且与现有我的项目同名。
(10)拷贝新我的项目的ProjectName.Domain\OpenIddict\OpenIddictDataSeedContributor.cs到我的项目中,并且基于ProjectName.DbMigrator\appsettings.json来更新appsettings.json,留神批改端口号。
(11)如果在IndexModel中应用IClientRepository,那么拷贝新我的项目的Index.cshtml.csIndex.cs到我的项目中。
(12)在AddAbpOpenIdConnect()办法中,更新scope的名字从roleroles
(13)在HttpApi.Host我的项目中,删除options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
(14)AuthServer不再要求JWT bearer authentication,须要删除它,比方AddJwtBearerUseJwtTokenMiddleware
(15)在IDE中尝试编译我的项目,依据报错来删除和援用代码和命名空间。
(16)如果应用EF Core作为DatabaseProvider,那么迁徙和更新数据库。

3.OpenIddict相干的模块包

(1)开源版本

Volo.Abp.OpenIddict.Domain (AbpOpenIddictDomainModule)Volo.Abp.OpenIddict.Domain.Shared (AbpOpenIddictDomainSharedModule)Volo.Abp.OpenIddict.EntityFrameworkCore (AbpOpenIddictEntityFrameworkCoreModule)Volo.Abp.OpenIddict.AspNetCore (AbpOpenIddictAspNetCoreModule)Volo.Abp.OpenIddict.MongoDB (AbpOpenIddictMongoDbModule)Volo.Abp.Account.Web.OpenIddict (AbpAccountWebOpenIddictModule)Volo.Abp.PermissionManagement.Domain.OpenIddict (AbpPermissionManagementDomainOpenIddictModule)

(2)商业版本

Volo.Abp.OpenIddict.Pro.Application.Contracts (AbpOpenIddictProApplicationContractsModule)Volo.Abp.OpenIddict.Pro.Application (AbpOpenIddictProApplicationModule)Volo.Abp.OpenIddict.Pro.HttpApi.Client (AbpOpenIddictProHttpApiClientModule)Volo.Abp.OpenIddict.Pro.HttpApi (AbpOpenIddictProHttpApiModule)Volo.Abp.OpenIddict.Pro.Blazor(AbpOpenIddictProBlazorModule)Volo.Abp.OpenIddict.Pro.Blazor.Server (AbpOpenIddictProBlazorServerModule)Volo.Abp.OpenIddict.Pro.Blazor.WebAssembly (AbpOpenIddictProBlazorWebAssemblyModule)Volo.Abp.OpenIddict.Pro.Web (AbpOpenIddictProWebModule)

五.ABP的路线图

  貌似停顿比较慢,特地是Vue启动模板,千呼万唤都出不来。不过仿佛也不重要了,GitHub下面有很多的基于Vue的前端框架,比方vue-element-admin就不错:

参考文献:
[1]ABP v5.3.3和6.0.0-rc.1比拟扭转:https://github.com/abpframewo...
[2]ABP路线图:https://docs.abp.io/zh-Hans/a...
[3]ABP 6.0.0-rc.1最近公布日志:https://github.com/abpframewo...
[4]ABP.IO Platform 6.0 RC Has Been Published:https://blog.abp.io/abp/ABP.I...
[5]ABP框架性能:https://abp.io/features
**[6]Add OpenIddict module:https://github.com/abpframewo...
[7]ABP OpenIddict Modules:https://github.com/abpframewo...
[8]Announcement of plan to replace the IdentityServer:https://github.com/abpframewo...
[9]ABP OpenIddict Modules:https://docs.abp.io/zh-Hans/a...
[10]Migration Identity Server to OpenIddict Guide:https://docs.abp.io/en/abp/6....
[11]OpenIddict:https://github.com/openiddict
[12]OpenIddict官网文档:https://documentation.openidd...
[13]openiddict/openiddict-core:https://github.com/openiddict...
[14]openiddict/openiddict-samples:https://github.com/openiddict...
[15]openiddict/openiddict-documentation:https://github.com/openiddict...**
[16]Integrated MAUI application startup template:https://github.com/abpframewo...
[17]LeptonX Theme:https://x.leptontheme.com/
[18]ASP.NET Core MVC/Razor Pages: The Basic Theme:https://docs.abp.io/en/abp/la...
[19]LeptonX Lite MVC UI:https://docs.abp.io/en/abp/la...
[20]ASP.NET Core MVC/Razor Pages: UI Theming:https://docs.abp.io/en/abp/la...
[21]abp-samples/Ids2OpenId:https://github.com/abpframewo...
[22]Fair Trade Software License:https://blog.duendesoftware.c...
[23]批改后的OpenIddict模块源码:https://url39.ctfile.com/f/25... (拜访明码: 2096)

本文由mdnice多平台公布