小编Shr*_*kar的帖子

将 IConfiguration 注入 ActionFilter

我们可以像这样将 IConfiguration 注入到类中:

//Controller
AppSettings obj = new AppSettings(_configuration);

//Class
public class AppSettings
{
    private IConfiguration _configuration;

    public AppSettings(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将 IConfiguration 注入到我的 ActionFilter 中。什么是最好的方法来做到这一点?

c# asp.net-core asp.net-core-2.1

4
推荐指数
1
解决办法
1350
查看次数

.NET Core API 中的自定义授权过滤器

我想在使用我的核心 api 访问任何数据之前对用户进行授权,所以我尝试使用 JWT 身份验证。我在使用 api 登录用户时成功生成了令牌,并将该令牌保存在会话中的客户端,现在每当用户想要使用 api 访问任何数据时,我都会将该令牌在标头中发送到 api,并且我想验证该 JWT 令牌使用自定义授权过滤器。我已经创建了自定义授权过滤器并将其应用到我的 GetMenu api 上,并且我能够成功验证该令牌,但在授权过滤器中进行令牌验证后,它不会在我的 GetMenu api 上命中它。

这是我的 AccountController 代码:

[Filters.Authorization]
[AllowAnonymous]
[HttpPost]
[Route("GetMenu")]
public IActionResult GetMenu(string clientid, int rolecode, string repcode)
{
    //further process
}
Run Code Online (Sandbox Code Playgroud)

这是我的 Filters.Authorization 代码:

public class Authorization: AuthorizeAttribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationFilterContext filterContext)
    {
        if (!ValidateToken(filterContext.HttpContext.Request.Headers["token"]))
        {
            filterContext.Result = new UnauthorizedResult();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在 OnAuthorization 方法和 GetMenu api 上有断点。我通过邮递员调用我的 GetMenu api 进行测试,它成功地在 Filters.Authorization 中的 OnAuthorization 方法上命中它并验证我的 JWT 令牌并在邮递员中显示状态代码:200,但在成功令牌验证后,它应该在 GetMenu api 上命中以进行进一步的操作正在处理数据,但没有命中。可能是什么问题?我缺少什么?请帮忙。

authorization core-api asp.net-authorization .net-core asp.net-core

3
推荐指数
1
解决办法
2万
查看次数