我想简单地检查 Api 密钥(在授权标头中发送),然后再允许某些 Web API 端点受到攻击。为了解决这个问题,我们假设 ApiKey 是12345
。我只想在到达特定操作方法之前检查此 Api Key 的值。我无法弄清楚这是否需要自定义 AuthorizeAttribute 或操作过滤器。
简单地说,我发出一个带有 header 的 GET 请求Authorization: apiKey 12345
授权属性实现如下所示:
public class AuthorizationFilterAttribute : Attribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
var apiKey = context.HttpContext.Request.Headers["Authorization"];
if (apiKey.Any())
{
// this would be your business
var subStrings = apiKey.ToString().Split(" ");
if (!(subStrings.Length >= 2 && subStrings[0] == "apiKey" && subStrings[1].Any()))
{
context.Result = new NotFoundResult();
}
}
else
{
context.Result = new NotFoundResult();
}
}
}
在此代码示例中,apiKey
is subStrings[1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)