Perché rendere la pagina di accesso a un'applicazione singola pagina in una pagina separata?

23

Mi chiedo perché sembra essere popolare che la pagina di accesso di una SPA sia una pagina separata che non è una pagina della SPA (come nel caso di caricamento e invio di dati tramite richieste Ajax)?

L'unica cosa che posso pensare è la sicurezza, ma non riesco a pensare a un motivo di sicurezza specifico. Voglio dire che l'unica cosa che mi viene in mente è che se la tua pagina di login in una parte della SPA, invia il nome utente / password tramite ajax che può essere visto da tali strumenti come firebug o web inspector tuttavia anche se lo si invia come normale Richiesta POST, ci sono altri strumenti che possono facilmente catturare questi dati (come il violinista, httpscoop, ecc ...).

C'è qualcosa che mi manca?

    
posta ryanzec 25.10.2012 - 21:34
fonte

4 risposte

17

Presumibilmente si tratta di salvare un sacco di risorse lato client (come pesanti framework JavaScript, immagini, etc ) che sono richiesti solo dall'applicazione.

Ci sono mezzi più sofisticati per raggiungere un obiettivo di rendimento simile (vedi " Malte Ubl & John Hjelmstad: un romanzo, efficiente approccio al caricamento di JavaScript - JSConf EU 2012 "), ma questo è abbastanza veloce da implementare e probabilmente altrettanto efficace, specialmente se la tua app Web utilizza comunque quasi tutte le risorse.

Puoi vederlo allo stato selvatico in un sito come il collegamento beta:

  1. link carica jquery , raphael , js personalizzato e 3 file CSS.
  2. link (la pagina SPI principale dell'applicazione) carica 10 framework javascript, 5 file css esterni e circa 60 immagini.
risposta data 25.10.2012 - 21:52
fonte
16

Penso che ci siano alcuni argomenti ragionevoli a favore o contro, e direi che anche la tecnologia gioca un ruolo nella decisione.

Si potrebbe obiettare che avere una "pagina" di accesso separata consente l'uso di "Directory Security". Generalmente chiunque può vedere la "pagina" di accesso, ma solo gli utenti autenticati possono visualizzare la "pagina" dell'applicazione e la sua "directory". I percorsi possono anche essere bloccati, dove / Account / è diverso da / App / e ognuno ha il proprio "profilo" di sicurezza.

Inoltre, se stai utilizzando un approccio SPA e stai mescolando l'autenticazione con l'esperienza dell'applicazione, la logica potrebbe diventare complicata. Invece di presumere che l'utente sia "loggato perché è qui", devi controllare costantemente il loro stato di autenticazione e chiedere "questo utente dovrebbe essere qui".

Inoltre, la pagina di accesso è in genere sul sito di fronte al consumatore .. vai su www.yourapp.com e ha informazioni su informazioni, contatti, supporto, ecc. e una pagina "login" ... dal login pagina, dopo l'autenticazione, è possibile reindirizzare a un intero host di destinazioni ..

La ragione per cui tengo una pagina di accesso separata, e il motivo per cui effettivamente ho un'app completamente diversa per il mio sito di "consumer facing" è perché posso esporre molto poco ai non autenticati. Per caso qualche idiota inizia a battere sulla mia pagina di login, non voglio che ciò influisca sul lato app delle cose .. anche se il login sta solo facendo una semplice ricerca di autenticazione ... mi aiuta a impedire al bozo di influenzare il mio Nel peggiore dei casi, il mio sito consumer va giù e nessuno può accedere, ma almeno gli utenti registrati non lo sapranno e la loro esperienza non inizierà a rallentare .. Non sto dicendo che è la scelta a prova di proiettile .. ma almeno ho isolato il rischio per l'area non autenticata ..

    
risposta data 25.10.2012 - 23:08
fonte
8

Una ragione per farlo è che puoi utilizzare le normali sessioni basate sui cookie. L'utente effettua l'accesso, la risposta invia i cookie insieme alla pagina principale iniziale ... e quindi tutte le successive chiamate ajax inviano il cookie al server.

    
risposta data 25.10.2012 - 22:49
fonte
4

Vedo alcuni motivi per farlo:

  1. Posso utilizzare le normali regole di controllo dell'accesso basate sul percorso in web.xml.
  2. Non posso mai essere sicuro di aver protetto la mia intera applicazione Ajax in modo corretto e ho bisogno di fare test approfonditi per essere sicuro.
  3. Posso delegare l'autenticazione a un framework (come Spring Security), un'applicazione di terze parti o una soluzione SSO (come CAS o JOSSO).
  4. Posso lasciare che il browser memorizzi il nome utente e (facoltativamente) le password per l'utente.
risposta data 26.10.2012 - 07:28
fonte

Leggi altre domande sui tag