Added rate limiting to RESTful API
Added token bucket and timer to degrade token bucket Modified REST API rate limiting Changed limiting to only be on token create and v2 token create Added config options to choose time limits Passed HttpContext to the execute method of endpoints Made blocking failed API logins optional Changed error codes on failed login to be ambiguous Added config to decide whether all or failed logins are limited Changed config variable names Cleaned up duplicate code in REST rate limiting Fixed my typo Changed error 431 to 403
This commit is contained in:
parent
45e762abd2
commit
09a8f95a70
6 changed files with 135 additions and 50 deletions
|
|
@ -65,9 +65,9 @@ namespace Rests
|
|||
get { return UriVerbs.Length > 0; }
|
||||
}
|
||||
|
||||
public virtual object Execute(RestVerbs verbs, IParameterCollection parameters, IRequest request)
|
||||
public virtual object Execute(RestVerbs verbs, IParameterCollection parameters, IRequest request, IHttpContext context)
|
||||
{
|
||||
return callback(new RestRequestArgs(verbs, parameters, request));
|
||||
return callback(new RestRequestArgs(verbs, parameters, request, context));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -90,17 +90,17 @@ namespace Rests
|
|||
{
|
||||
}
|
||||
|
||||
public override object Execute(RestVerbs verbs, IParameterCollection parameters, IRequest request)
|
||||
public override object Execute(RestVerbs verbs, IParameterCollection parameters, IRequest request, IHttpContext context)
|
||||
{
|
||||
return new RestObject("401") { Error = "Not authorized. The specified API endpoint requires a token." };
|
||||
}
|
||||
|
||||
public object Execute(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData, IRequest request)
|
||||
public object Execute(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData, IRequest request, IHttpContext context)
|
||||
{
|
||||
if (tokenData.Equals(SecureRest.TokenData.None))
|
||||
return new RestObject("401") { Error = "Not authorized. The specified API endpoint requires a token." };
|
||||
|
||||
return callback(new RestRequestArgs(verbs, parameters, request, tokenData));
|
||||
return callback(new RestRequestArgs(verbs, parameters, request, tokenData, context));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue