【发布时间】:2017-07-14 09:05:46
【问题描述】:
我有一个 .NET 核心项目,正在尝试使用 AuthorizationOptions 创建自定义策略,如此处的文档所示:
ASP.NET.Core Authorization - Dependency Injection in requirement handlers
示例显示使用 1 个参数设置授权要求 - 一个简单的 int 值。我的自定义要求需要一个字符串参数以及一个 DbContext 对象。我想在运行时将 DbContext 注入到需求的构造函数中。我正在使用 Autofac 容器。我不确定如何实现这一点 - 已经尝试了几种方法,但到目前为止没有任何效果。
这是我的自定义要求:
public UserNameRequirement(string username, MyDbContext context)
{
_userName = username;
_dbContext = context;
}
在 Startup.cs ConfigureServices 方法中设置授权选项时,文档显示您像这样注册:
services.AddAuthorization(options =>
{
options.AddPolicy(
"UserNamePolicy",
policy => policy.Requirements.Add(new UserNameRequirement("admin", ** want to resolve and inject my DbContext here **)));
}
我不确定如何实现这一点。我看过这篇文章,这是一个类似的问题,但它使用的是 ASP.NET 5,并且该语法不适用于 .net 核心:
【问题讨论】:
-
出于好奇,在
UserNameRequirement类中需要MyDbContext的实例吗?
标签: dependency-injection asp.net-core autofac .net-core asp.net-authorization