api - 在 .net Core Api 中创建用于授权的自定义操作过滤器

标签 api .net-core

我正在创建一个自定义操作过滤器,其中我试图检查请求 header 中是否有关键的“授权”。如果存在,它是否包含值“Bearer”。 我尝试过这样的事情::

public class CustomAuthFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string data;
            var x=filterContext.HttpContext.Request.Headers.TryGetValue("Authorization",out data);
            //what to do here
        }
    }

我该怎么做?

最佳答案

为了掩盖你的简单场景,你可以这样做:

public class CustomAuthFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        bool result = filterContext.HttpContext.Request.Headers.TryGetValue("Authorization", out var token);

        if (!result)
        {
            filterContext.Result = new UnauthorizedObjectResult("Missing authorization header");

            return;
        }

        if (!token.Contains("Bearer "))
        {
            filterContext.Result = new UnauthorizedObjectResult("Invalid bearer token");

            return;
        }
    }
}

关于api - 在 .net Core Api 中创建用于授权的自定义操作过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67370263/

相关文章:

mysql - 我的 POST 请求使用 Node.js 但不使用 API

django - 使用 Amazon API Gateway 时,如何从 Django 后端获取请求中使用的 API key ?

domain-driven-design - 处理来自映射对象的实体更新

c# - .NET Core 的 ProcessBuilder

amazon-web-services - 发布 .NET Core 中内置的 AWS Lambda 函数时出错

android - 是否有适用于双 SIM 卡 Android 手机的 API?

javascript - 使用请求 HTTP 客户端库发布到 FastSpring API

php - 通过php将数据请求发送到flask API

.net-core - 当工作线程是事件驱动时,BackgroundService.ExecuteAsync 应该返回什么?

linux - dotnet 核心中的 SocketCAN