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.

War es 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top