Я хотел бы просто проверить наличие ключа API, отправленного в заголовке авторизации, прежде чем разрешать доступ к определенным конечным точкам веб-API. Ради этого вопроса предположим, что ApiKey — это 12345
. Я просто хочу проверить значение этого ключа API до достижения определенного метода действия. Я не могу понять, требует ли это пользовательского AuthorizeAttribute или фильтра действий.
Простой способ проверить ключ API в веб-API ASP.NET Core
Ответы (1)
Просто я делаю запрос 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
равно subStrings[1]
person
Khai Nguyen
schedule
03.12.2018
Как это вызывается/используется? Декоратор атрибутов? Прошивается в конфиге?
- person Brian David Berman; 04.12.2018
Это атрибут, и мы вызываем его с помощью
[TypeFilter(typeof(AuthorizationFilterAttribute))]
или [AuthorizationFilterAttribute]
при действии.
- person Khai Nguyen; 04.12.2018