首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IAuthorizationFilter ASP.Net Core 3中的依赖注入

IAuthorizationFilter ASP.Net Core 3中的依赖注入
EN

Stack Overflow用户
提问于 2020-03-22 16:11:19
回答 1查看 3.3K关注 0票数 2

我创建了一个过滤器IAuthorizationFilter,我需要在这个属性中使用DepencyInjection。

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AllowAccessAttribute : Attribute, IAuthorizationFilter
{
    private readonly IDomainUnitOfWork unitofwork;
    private readonly HttpContext httpContext;

    public AllowAccessAttribute(IDomainUnitOfWork unitofwork,HttpContext httpContext)
    {
        this.unitofwork = unitofwork;
        this.httpContext = httpContext;
    }
    public void OnAuthorization(AuthorizationFilterContext context)
    {
        string controller = context.RouteData.Values["controller"].ToString();
        string action = context.RouteData.Values["action"].ToString();
        var userId = httpContext.User.Identity.GetUserId<long>();
        var access = string.Format("{0}:{1}", controller, action);
        if (unitofwork.UserRepository.AccessLevelRepository.ValidateAccess(userId, access))
            context.Result = new StatusCodeResult(403);
    }
}

当我需要使用这个属性时,它会显示错误。

代码语言:javascript
复制
[HttpGet]
[AllowAccess]
public async Task<ApiReturn> ChangeUserActiveStatus(long id)
{
    var result = await dispatchers.SendAsync(new UserActiveStateCommand { id = id });
    if (result.Success)
    {
        return Ok();
    }
    return BadRequest(result.Exception);
}

并显示此错误:

不存在与'AllowAccessAttribute.AllowAccessAttribute(IDomainUnitOfWork,HttpContext所需的形式参数“单位工作”相对应的参数(

)

,有什么问题?我如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-22 16:19:42

您需要在IoC容器中注册服务。

Startup.cs:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddScoped<IDomainUnitOfWork, DomainUnitOfWork>(); // per request injection
    ...
}

还尝试将方法的属性更改为TypeFilter

代码语言:javascript
复制
[HttpGet]
[TypeFilter(typeof(AllowAccessAttribute))]
public async Task<ApiReturn> ChangeUserActiveStatus(long id)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60801702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档