Wie tun Sie Unit-Test-Web-Seite Autorisierung mit ASP.NET MVC?
-
02-07-2019 - |
Frage
Angenommen, Sie haben eine Profilseite, die nur vom Besitzer des Profils zugegriffen werden kann. Diese Profilseite befindet sich unter:
Benutzer / Profil / {userID}
Nun, ich, um sich vorstellen, den Zugriff auf diese Seite von anderen Benutzern zu verhindern, können Sie Ihre Usercontroller Klasse Profil Funktion Struktur könnte die aktuelle Sitzung, die Identität zu überprüfen:
HttpContext.Current.User.Identity.Name
Wenn die ID der in der URL übereinstimmt, dann gehen Sie. Andernfalls Sie irgendeine Art von Fehlerseite umgeleitet werden.
Meine Frage ist, wie tun Sie Unit-Test so etwas wie das? Ich vermute, dass Sie anstelle der Httpcontext in der Steuerung eine Art Abhängigkeitsinjektion verwenden müssen auf den Scheck zu tun, aber ich bin nicht klar, was der beste Weg, das zu tun ist. Jede Beratung wäre hilfreich.
Lösung 2
beenden ich in Kazi Manzur ist mit dem "UserNameFilter" angezeigt gehen Blog-Post . Funktioniert wie ein Zauber und einfach zu Unit-Test.
Andere Tipps
Der Link oben ist ein guter. Ich möchte noch hinzufügen, dass statt programmatisch den User.Identity.Name Wert überprüft, sollten Sie die Autorisieren Attribute wie in dem Artikel beschrieben:
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
Sie können es wahrscheinlich eine Fälschung für den Controller Kontext unter Verwendung. Sie in diesem Artikel: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx
Dies ist, wo spöttisch kommt, mit einem gefälschten Httpcontext.