2012-09-27 3 views
3

Je dois implémenter un mécanisme d'autorisation dans mon application. L'autorisation est basée sur l'objet qui est envoyé du client au serwer. Chaque action dans un contrôleur prend comme argument List. En fonction de la propriété imbriquée des objets de cette liste, je dois accorder ou refuser l'accès à l'action du contrôleur. Ma première approche a consisté à utiliser l'attributActionFilterAttribute pour l'autorisation

public class CustomAuthAttribute : FilterAttribute,IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     //SOME LOGIC HERE 
    } 
} 

filtre personnalisé Cependant, en raison du fait que la demande est la demande JSON, il est difficile pour moi d'obtenir des valeurs de chaque propriété pertinente des objets envoyés (je n'accès à valeurs json). C'est pourquoi j'ai pensé que je pourrais utiliser ActionFilterAttribute au lieu de FilterAttribute. La question est de savoir si c'est une bonne solution pour l'autorisation? Peut-être qu'il serait préférable de vérifier l'autorisation à l'intérieur des actions?

Répondre

0

La sécurité est un cross cutting concern donc les filtres et les attributs sont des endroits idéaux pour cela. Avoir à le vérifier manuellement dans chaque action ajouterait beaucoup de code supplémentaire qui devait être maintenu et ajoute au risque de sécurité si elle est oubliée. En faire un filtre global signifierait qu'il serait toujours appliqué, ce qui signifie que vous pourriez écrire un attribut qui pourrait peut-être exempter une Action/un Contrôleur s'ils n'en avaient pas besoin, par ex. AllowAnnoymous etc enter link description here.

Meilleur article général sur la sécurité que j'ai trouvé pour MVC3 est celui-ci http://www.codeproject.com/Articles/288631/Secure-ASP-NET-MVC3-applications

Questions connexes