Я пытаюсь создать свой собственный класс атрибутов IAuthorizationFilter
. По сути, каждый вызов API имеет параметр строки запроса, который называется 'key' . Затем я собирался украсить любые действия, которые требуют этого, с помощью простого атрибута авторизации.
Я надеялся, что мой метод OnAuthorization(..)
просто извлечет значение параметра запроса, если оно было предоставлено. Если это было и это законно, то пользователь авторизован. в противном случае это не так.
Я не уверен, как это сделать в методе OnAuthorization(..)
.
Или я должен вместо этого использовать IActionFilter
?
РЕДАКТИРОВАТЬ: я добавил в некоторый код, чтобы показать, что я делаю ...
public void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
ApiKey apiKey = null;
string queryStringKey = filterContext.HttpContext.Request.QueryString["key"];
if (!string.IsNullOrEmpty(queryStringKey))
{
apiKey = GetApiKey(queryStringKey); // Custom code that checks a dictionary.
}
// Do we have a key?
if (apiKey == null)
{
filterContext.Result = new HttpUnauthorizedResult();
}
// TODO: Is this key allowed for this domain?
// All is good, so don't do anything else.
}