Comment testez-vous l'autorisation des pages Web à l'aide d'ASP.NET MVC?
-
02-07-2019 - |
Question
Supposons que vous ayez une page de profil accessible uniquement au propriétaire de ce profil. Cette page de profil se trouve à l'adresse suivante:
.Utilisateur / Profil / {ID utilisateur}
Maintenant, j'imagine que pour empêcher les autres utilisateurs d'accéder à cette page, vous pouvez structurer la fonction de profil de votre classe UserController pour vérifier l'identité de la session en cours:
HttpContext.Current.User.Identity.Name
Si l'identifiant correspond à celui de l'URL, vous poursuivez. Sinon, vous redirigez vers une sorte de page d'erreur.
Ma question est la suivante: comment testez-vous les unités de ce type? Je suppose que vous devez utiliser une sorte d’injection de dépendance au lieu de HttpContext dans le contrôleur pour effectuer la vérification, mais je ne sais pas quel est le meilleur moyen de le faire. Tout conseil serait utile.
La solution 2
J'ai fini par utiliser le " UserNameFilter " montré dans article de blog . Fonctionne comme un charme et facile à tester un peu.
Autres conseils
Le lien ci-dessus est bon. J'ajouterais également qu'au lieu de vérifier par programme la valeur User.Identity.Name, vous devez utiliser les attributs Authorize décrits dans l'article:
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
Vous pouvez probablement le faire en utilisant un faux pour le contexte du contrôleur. Découvrez cet article: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx
C’est là que la moquerie entre en scène, avec un faux HttpContext.