小编Ste*_*ack的帖子

如何从ASP.NET Core中的ActionFilterAttribute访问AppSettings

我目前正在尝试开发WebAPI(.NET Core),该WebAPI具有一些应使用HTTP基本身份验证的控制器操作。为了实现这一点,我编写了一个ActionFilterAttribute,然后可以在控制器中使用它来限制对某些操作的访问。如果我做这样的事情,这一切都很好:

BasicAuthAttribute.cs

public class BasicAuthAttribute : ActionFilterAttribute{
    private string _username { get; set; }
    private string _password { get; set; }

    public BasicAuthAttribute(string username, string password) {
        _username = username;
        _password = password;
    }

    public override void OnActionExecuting(ActionExecutingContext actionContext) {
    //do Auth check...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在控制器中按以下方式使用它:

SomeController.cs

[BasicAuth("testuser","testpassword")]
[HttpGet("{id}")]
public IActionResult Get(string id) {
    return new ObjectResult("Test");
}
Run Code Online (Sandbox Code Playgroud)

现在,我不想在SomeController.cs中指定用户名和密码。相反,我想将它们存储在appsettings.json中。如何通过ActionFilterAttribute的OnActionExecuting方法访问存储在appsettings.json中的值?

如果将BasicAuthAttribute的构造函数更改为以下内容,.Net希望我通过设置,这是不可能的。依赖注入似乎在这里不起作用。

public BasicAuthAttribute(IOptions<AppSettings> appSettings) {}
Run Code Online (Sandbox Code Playgroud)

任何帮助或想法将不胜感激

根据Set的答案进行更新:

我最终将属性更改为过滤器。如果其他人需要它,请参见下面的工作解决方案:

BasicAuthFilter.cs

public class BasicAuthFilter : IActionFilter{

protected AppSettings _settings { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core

5
推荐指数
1
解决办法
1815
查看次数

标签 统计

.net-core ×1

asp.net-core ×1

c# ×1