J'essaie de créer ma propre classe d'attributs IAuthorizationFilter
. Fondamentalement, chaque appel API a un paramètre de chaîne de requête appelé 'clé'. J'allais ensuite décorer toutes les actions qui en ont besoin, avec l'attribut d'autorisation simple.Besoin d'aide/conseil avec une classe ASP.NET MVC IAuthorizationFilter personnalisée
J'espérais que ma méthode OnAuthorization(..)
extrairait juste la valeur du paramètre de requête, si elle était fournie. Si c'était le cas, et c'est légitime, alors l'utilisateur est autorisé. sinon, ils ne le sont pas.
Je ne sais pas comment faire cela dans la méthode OnAuthorization(..)
.
Ou devrais-je utiliser un IActionFilter
à la place?
EDIT: J'ai ajouté dans un code pour montrer ce que je fais ...
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.
}
Que dois-je faire pour dire que ce n'est pas autorisé? filterContext.Result = new HttpUnauthorizedResult(); sinon, tout garder par défaut? –
@ Pure.Krome: voir ma modification sur ce post. –
Donc, si la valeur de la propriété Result est non nulle, alors ils sont refusés. Où est-ce vérifié/manipulé? –