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.*
包替换Volo
的IdentityServer.*
包。比方,Volo.Abp.IdentityServer.Domain
到Volo.Abp.OpenIddict.Domain
,Volo.Abp.Account.Web.IdentityServer
到Volo.Abp.Account.Web.OpenIddict
。
(3)应用相应的OpenIddict
模块替换所有IdentityServer
模块。比方,AbpIdentityServerDomainModule
到AbpOpenIddictDomainModule
,AbpAccountWebIdentityServerModule
到AbpAccountWebOpenIddictModule
。
(4)在ProjectNameDbContext
类中,重命名ConfigureIdentityServer
为ConfigureOpenIddict
。
(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)将IdentityServerDataSeedContributor
从Domain
我的项目中删除。
(9)创立新版本的我的项目,并且与现有我的项目同名。
(10)拷贝新我的项目的ProjectName.Domain\OpenIddict\OpenIddictDataSeedContributor.cs
到我的项目中,并且基于ProjectName.DbMigrator\appsettings.json
来更新appsettings.json
,留神批改端口号。
(11)如果在IndexModel
中应用IClientRepository
,那么拷贝新我的项目的Index.cshtml.cs
和Index.cs
到我的项目中。
(12)在AddAbpOpenIdConnect()
办法中,更新scope的名字从role
到roles
。
(13)在HttpApi.Host
我的项目中,删除options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
。
(14)AuthServer不再要求JWT bearer authentication
,须要删除它,比方AddJwtBearer
和UseJwtTokenMiddleware
。
(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多平台公布