加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – AuthorizationOptions上的依赖注入

发布时间:2020-12-15 07:53:49 所属栏目:百科 来源:网络整理
导读:我正在为我的ASP.NET 5 MVC应用程序创建授权规则/策略.创建它很简单,很容易做到,它正在工作(我的基本测试).但是,我现在需要将我的数据上下文纳入需求. 我在IAuthorizationRequirement实现中创建了一个构造函数,它实现了一个实现DbContext的MyContext对象. 我
我正在为我的ASP.NET 5 MVC应用程序创建授权规则/策略.创建它很简单,很容易做到,它正在工作(我的基本测试).但是,我现在需要将我的数据上下文纳入需求.

我在IAuthorizationRequirement实现中创建了一个构造函数,它实现了一个实现DbContext的MyContext对象.

我正在我的Startup.cs文件中注册IAuthorizationRequirement.

services.Configure<AuthorizationOptions>(options => 
    {
        options.AddPolicy("AllowProfileManagement",policy => policy.Requirements.Add(
            new AllowProfileManagementRequirement(new MyRepository(new MyContext()))));
    });

不幸的是,当我的规则运行时,MyContext不知道所使用的连接字符串(在Startup.cs中更远):

services.AddEntityFramework()
    .AddSqlServer()
    .AddDbContext<MemorialContext>(options =>
        options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

我正在使用DI这些类型(并且它正在工作).

services.AddTransient<MyRepository>(
        provider => new MyRepository(provider.GetRequiredService<MyContext>()));

我知道我在做什么是不对的,但我不知道如何做到这一点,以便DI被用于所有事情.

解决方法

这是它总是有效的方式.发布问题,答案很快就会出现.以下是那些可能遇到我问题的人的方式.
services.Configure<AuthorizationOptions>(options => 
    {
        options.AddPolicy("AllowProfileManagement",policy => policy.Requirements.Add(
            services.BuildServiceProvider().GetRequiredService< AllowProfileManagementRequirement>()));
    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读