我正在创建一个自定义操作过滤器,其中我试图检查请求 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/