Un'app Web tipica è per lo più senza stato , a causa della sua natura richiesta / risposta . Il protocollo HTTP è il miglior esempio di protocollo senza stato . Tuttavia, poiché la maggior parte delle app Web richiedono stato , al fine di mantenere lo stato , tra server e client, i cookie vengono utilizzati in modo tale che il server possa inviare ogni risposta al client. Ciò significa che la prossima richiesta fatta dal cliente includerà questo cookie e sarà quindi riconosciuta dal server. In questo modo il server può mantenere una sessione con lo stateless cliente, conoscendo lo più tutto ciò che riguarda l'applicazione dello stato , ma memorizzati nel server. In questo scenario in nessun momento il cliente è in possessostato , che non è come funziona Ember.js .
In Ember.js le cose sono diverse. Ember.js semplifica il lavoro del programmatore perché mantiene effettivamente lo stato per te, nel client, conoscendo in ogni momento il suo stato senza dover fare una richiesta al server per richiedere dati sullo stato .
Tuttavia, mantenere lo stato nel client può anche talvolta causare problemi di concorrenza che semplicemente non sono presenti in situazioni senza stato . Ember.js, tuttavia, si occupa anche di questi problemi, in particolare ember-data è stato creato tenendo presente questo aspetto. In conclusione, Ember.js è un framework progettato per client con stato .
Ember.js non funziona come una tipica app Web senza stato in cui la sessione , lo stato e i cookie corrispondenti sono gestiti quasi completamente dal server. Ember.js mantiene lo stato completamente in javascript (nella memoria del client e non nel DOM come in altri framework) e non necessita del server per gestire la sessione. Ciò comporta che Ember.js è più versatile in molte situazioni, ad esempio quando l'app è in modalità offline.
Ovviamente per motivi di sicurezza ha bisogno di un qualche tipo di token o chiave univoca da inviare al server ogni volta che viene effettuata una richiesta per essere autenticato , in questo modo il server può cercare il token di invio (che è stato inizialmente emesso dal server) e verificare se è valido prima di inviare una risposta al client.
A mio avviso, il motivo principale per cui utilizzare un token di autenticazione anziché i cookie, come indicato nelle FAQ di Ember Auth, è principalmente a causa della natura del framework Ember.js e anche perché si adatta maggiormente al paradigma dell'app Web stateful . Pertanto, il meccanismo dei cookie non è l'approccio migliore durante la creazione di un'app Ember.js.
Spero che la mia risposta dia più significato alla tua domanda.