Ich entwickle eine SPA-Anwendung mit AngularJS mit REST Web API, auf einer sehr kleinen Schicht von ASP.NET MVC4. Aus Gründen, die hier nicht wichtig sind, verwende ich nicht den Standard-Account-Controller von MVC4.Umleitung auf Original-URL mit Hash-Tag (#) in MVC4 zerbrochen
Grundsätzlich möchte ich "Aufgaben" zwischen Benutzern teilen. Mein Ziel ist es, die URL einer bestimmten "Task" -Entität per E-Mail an jeden Benutzer senden zu können. Ein Klick auf diese URL sollte die Authentifizierung starten. Nach einer erfolgreichen Authentifizierung möchte ich die Informationen der realen Aufgabenseite anzeigen.
AngularJS verursacht meine URLs # Zeichen, oder eine URL einer Seite Anzeigen der Aufgabe "XYZ123" ist zu haben: http://hostname.com/#/tasks/XYZ123
ASP.NET leitet den unberechtigten Zugriff auf diese URL zu: http://hostname.com/Home/Login?ReturnUrl=%2f#/tasks/XYZ123
das ist in Ordnung, aber die entsprechende Controller-Methode des Weg von # „schneidet“, so in:
public ActionResult Login(string returnUrl)
der Wert von ‚returnUrl‘ nur sein „/“
Also, ich verliere den Weg: Ich möchte einen "Connect with Facebook" Link, um die Original-URL erstellen, die, wie:
http://hostname.com/Login/ExternalLogin?ReturnUrl=%2F#/tasks/XYZ123
aber ich kann es nicht.
Was ist der richtige Weg, um dieses Problem zu lösen?
Ich kann mir vorstellen, meine eigene Umleitungsdienst-URL ohne # Tag zu erstellen, aber diese Lösung bedeutet zusätzliche Arbeit und deckt nur einen Fall ab, wenn das System eine Nachricht mit Aufgaben-URL sendet - Menschen werden immer noch versuchen, die Nachricht zu kopieren/einzufügen Standort-URL aus dem Browser.
Danke für jeden Hinweis.
Max
Ich denke, das Problem ist das '#' ist nicht codiert in '% 23'. Der Browser sendet gerade den '% 2f' (was ein'/') Teil vor dem' # 'ist. – Marthijn
Marthijin hat Recht. Um Ihr Problem zu lösen, verwenden Sie [encodeURIComponent] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) für den Wert von 'ReturnUrl' beim Erstellen der URL – LostInComputer