您好,欢迎访问全国教育考试教材网
商品分类

.NET云原生架构师训练营(权限系统代码实现EntityAccess)

由于ActionAccess是一个类库,提供了一些分散的功能,因此需要添加一个扩展方法来组装这些功能,并在主机启动时执行动作扫描。

使用Microsoft.Extensions.DependencyInjection; 命名空间DotNetNB.Security.Core.Extensions{ 公共静态类ServiceCollectionExtensions { 公共静态IServiceCollection AddSecurity(此IServiceCollection 服务) { services.AddHostedServiceResourceProviderHostedService(); }退货服务; } }}ResourceProviderHostedService继承自IHostedService,有一个StartAsync和一个StopAsync方法

using Microsoft.Extensions.Hosting;namespace DotNetNB.Security.Core{ public class ResourceProviderHostedService : IHostedService { public async Task StartAsync(CancellationToken CancellationToken) { } public async Task StopAsync(CancellationToken CancellationToken) { } }}创建一个新的示例api 项目DotNetNB。 WebApplication,在这个api项目中使用我们的dll应该足够简单,就像使用asp .net core api一样

添加DotNetNB.Security.Core的项目引用后,可以直接在Program.cs中调用扩展方法

使用DotNetNB.Security.Core.Extensions;builder.Services.AddSecurity();当开始扫描时,Security.Core不知道外部主机中有哪些操作提供者,因此需要注册它并构建一个构建器。

同时还需要一个配置选项来告诉我们它来自哪个包,是ActionAccess还是EntityAccess。

.NET云原生架构师训练营(权限系统代码实现EntityAccess)

请参阅MvcOptions

builder.Services.AddControllers(options={});它是Action的委托

公共静态IMvcBuilder AddControllers(此IServiceCollection 服务,ActionMvcOptions?配置){ IMvcCoreBuilder builder=services !=null ? MvcServiceCollectionExtensions.AddControllersCore(服务) : 抛出新的ArgumentNullException(nameof (服务)); if (configure!=null) builder.AddMvcOptions(configure); return (IMvcBuilder) new MvcBuilder(builder.Services, builder.PartManager);} 所以我们在AddSecurity中添加一个输入参数

公共静态IServiceCollection AddSecurity(此IServiceCollection服务,ActionSecurityOption?配置)SecurityOption

使用Microsoft.Extensions.DependencyInjection;命名空间DotNetNB.Security.Core.Extensions{ 公共类SecurityOption { 公共IServiceCollection Services { get;放; } }} 在调用AddSecurity扩展方法时通过SecurityOption进行配置,这样所有的外部api只需要做这个配置,就可以引用两个包的所有功能。

builder.Services.AddSecurity(options={ options.AddActionAccess(); options.AddEntityAccessDBContext();});参考MvcCoreServiceCollectionExtensions的AddMvcCoreServices方法

.NET云原生架构师训练营(权限系统代码实现EntityAccess)

内部静态void AddMvcCoreServices(IServiceCollection services){ ////选项//services.TryAddEnumerable( ServiceDescriptor.TransientIConfigureOptionsMvcOptions, MvcCoreMvcOptionsSetup());} 在ActionAccess中添加扩展方法AddActionAccessControl并添加IResourceProvider,这样就可以在ResourceProviderHostedService中读取

使用DotNetNB.Security.Core;使用DotNetNB.Security.Core.Extensions;使用Microsoft.Extensions.DependencyInjection;使用Microsoft.Extensions.DependencyInjection.Extensions;命名空间DotNetNB.Security.ActionAccess{ 公共静态类SecurityOptionExtensions { 公共静态SecurityOption AddActionAccessControl(this SecurityOption option) { option.Services.TryAddEnumerable(ServiceDescriptor.TransientIResourceProvider, ActionResourceProvider());退货选项; } }}在ResourceProviderHostedService的构造函数中读取IServiceProvider

使用Microsoft.Extensions.Hosting;命名空间DotNetNB.Security.Core{ public class ResourceProviderHostedService : IHostedService { private readonly IServiceProvider[] _serviceProviders;公共ResourceProviderHostedService(IServiceProvider[] serviceProviders) { _serviceProviders=serviceProviders; } public async Task StartAsync(CancellationToken CancellationToken) { } public async Task StopAsync(CancellationToken CancellationToken) { } }} 另外在EntityAccess 中添加一个扩展方法AddEntityAccessControl

使用DotNetNB.Security.Core;使用DotNetNB.Security.Core.Extensions;使用Microsoft.Extensions.DependencyInjection;使用Microsoft.Extensions.DependencyInjection.Extensions;命名空间DotNetNB.Security.EntityAccess{ 公共静态类SecurityOptionExtensions { 公共静态SecurityOption AddEntityAccessControl(this SecurityOption 选项) { option.Services.TryAddEnumerable(ServiceDescriptor.TransientIResourceProvider, EntityResourceProvider());退货选项; } }}EntityResourceProvider继承IResourceProvider

使用DotNetNB.Security.Core;使用DotNetNB.Security.Core.Models;命名空间DotNetNB.Security.EntityAccess{ public class EntityResourceProvider : IResourceProvider { public async TaskIEnumerableResource ExecuteAsync() { return new ListResource(); } } }}在DotNetNB 中完成后。添加对WebApplication的项目引用来配置它

用户评论


淡抹烟熏妆丶

这个.NET云原生架构师训练营听起来很专业啊,特别是EntityAccess的权限系统代码实现,我对这个很感兴趣,想了解更多细节。

    有20位网友表示赞同!


栀蓝

刚刚看到这个标题,对EntityAccess权限系统实现有点懵,不过训练营应该会讲得比较清楚,希望我能跟得上。

    有14位网友表示赞同!


纯情小火鸡

终于找到一个专注于.NET云原生架构师的地方了,权限系统的代码实现是重点,期待能学到实用的东西。

    有12位网友表示赞同!


在哪跌倒こ就在哪躺下

看了训练营的内容介绍,感觉EntityAccess权限系统的实现方法很有创意,想看看具体怎么操作的。

    有15位网友表示赞同!


╯念抹浅笑

我对.NET不太熟悉,但是对云原生架构挺感兴趣的,这个训练营应该能让我入门。

    有10位网友表示赞同!


♂你那刺眼的温柔

EntityAccess权限系统的代码实现听起来挺复杂的,但是作为一个架构师,我觉得这是必须掌握的技能。

    有10位网友表示赞同!


关于道别

这个训练营的标题太吸引人了,尤其是EntityAccess这部分,我一定要报名学习。

    有16位网友表示赞同!


ヅ她的身影若隐若现

我对.NET云原生架构不是很懂,但是看到权限系统代码实现,觉得这个训练营应该挺适合我的。

    有18位网友表示赞同!


熏染

之前看过一些关于EntityAccess权限系统的文章,但是自己动手实践还是头一回,这个训练营正好满足我的需求。

    有19位网友表示赞同!


青袂婉约

作为一个开发者,我觉得权限系统是实现安全性的关键,这个训练营应该能让我在这个领域有所突破。

    有17位网友表示赞同!


夏至离别

标题中的.NET云原生架构师训练营听起来很高级,我对EntityAccess权限系统也感兴趣,想去看看。

    有20位网友表示赞同!


巷口酒肆

权限系统的代码实现是每个架构师必备技能,这个训练营看起来很实用,希望能加入。

    有13位网友表示赞同!


念安я

我对.NET不太熟悉,但是看到EntityAccess权限系统的实现,觉得这个训练营对我的职业发展有帮助。

    有9位网友表示赞同!


君临臣

标题里提到的权限系统代码实现,我觉得应该是训练营的亮点,期待能学到更多的技术。

    有16位网友表示赞同!


龙吟凤

作为一个初学者,我对.NET云原生架构很感兴趣,这个训练营应该能帮我打开新的大门。

    有20位网友表示赞同!


拉扯

看到EntityAccess权限系统的代码实现,我觉得这个训练营适合不同阶段的学习者,很期待。

    有12位网友表示赞同!


醉枫染墨

我对.NET不太了解,但是看到这个训练营的内容,觉得学习权限系统代码实现是个不错的起点。

    有12位网友表示赞同!


鹿先森,教魔方

这个训练营的标题很有吸引力,我对EntityAccess权限系统的实现方法很感兴趣,想了解更多。

    有18位网友表示赞同!


浮光浅夏ζ

之前对.NET云原生架构一窍不通,但是看到这个训练营的内容,我觉得自己有潜力成为一名架构师。

    有17位网友表示赞同!