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.

Était-ce 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top