Sto sviluppando un'applicazione SPA utilizzando AngularJS che funziona con l'API Web REST, sopra un livello molto piccolo di ASP.NET MVC4. Per ragioni non importanti qui, non sto utilizzando l'Account Controller predefinito di MVC4.Reindirizzamento all'URL originale con tag hash (#) interrotto in MVC4
In pratica, voglio condividere "compiti" tra gli utenti. Il mio obiettivo è di poter inviare l'URL di una specifica entità "attività" a qualsiasi utente, via email. Cliccando su quell'URL dovrebbe lanciare l'autenticazione. Dopo una corretta autenticazione, voglio visualizzare le informazioni della pagina delle attività reali.
AngularJS provoca miei URL di avere # segno, o un URL di una pagina che visualizza il compito "XYZ123" è: http://hostname.com/#/tasks/XYZ123
ASP.NET reindirizza l'accesso non autorizzato a quella URL: http://hostname.com/Home/Login?ReturnUrl=%2f#/tasks/XYZ123
Questo è OK, ma il metodo di controllo rilevante "taglia fuori" il percorso da #, quindi in:
public ActionResult Login(string returnUrl)
il valore di 'ReturnURL' sarà solo "/"
Quindi, sto perdendo il percorso: Vorrei costruire un collegamento "Connect with Facebook" avere l'URL originale, come:
http://hostname.com/Login/ExternalLogin?ReturnUrl=%2F#/tasks/XYZ123
ma non ci riesco.
Qual è il modo corretto per risolvere questo problema?
Posso pensare di creare il mio URL di servizio di reindirizzamento senza # tag, ma questa soluzione implica un lavoro aggiuntivo e copre solo un caso quando il sistema invia un messaggio con l'URL dell'attività: gli utenti tenteranno comunque di copiare/incollare il URL di posizione dal browser.
Grazie per qualsiasi suggerimento.
Max
Penso che il problema sia "#" non codificato in "% 23". Il browser sta semplicemente inviando la parte '% 2f' (che è una'/') prima di' # '. – Marthijn
Marthijin ha ragione. Per risolvere il tuo problema, usa [encodeURIComponent] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) sul valore di 'ReturnUrl' quando costruisci l'URL – LostInComputer