2013-09-29 11 views
6

Ho appena installato lo stack MEAN (MongoDB, Express.js, AngularJS, Node.js) e ho aperto il programma di esempio (come trovato su mean.io) e hanno un'app di base a cui puoi accedere e creare un blog " articoli "solo per test e così via.Errore di sicurezza del routing in Angular/MEAN.io?

In ogni caso, ho rimosso il '#!' dall'URL e ha emesso l'intero modello utente e articolo così come sono nel database. Sembra quasi che farlo impedisca il routing attraverso Angular e utilizzi invece le rotte Express che sono solo apis JSON REST. Si tratta di un difetto nel pacchetto stack MEAN, nel complesso di Angular o forse solo in un ambiente di sviluppo? Non riesco a immaginare che questo sarebbe stato rilasciato con un enorme difetto del genere, ma forse sono solo manca qualcosa ..

passi Replicateable:

  • istruzioni di installazione seguire su http://mean.io
  • Goto tuo locale App nel browser e creare un account e login
  • Creare un articolo
  • visualizzare l'elemento articolo appena creato e rimuovere il #!/per l'URL, è poi vedere l'oggetto JSON del vostro loggato account utente completo di password hash e sale, nonché dell'oggetto .
+1

È un esempio, non un sistema pronto per la produzione: * "È progettato per offrirti un modo rapido e organizzato per iniziare a sviluppare applicazioni web basate su MEAN con moduli utili come mangusta e passaporto pre-raggruppati e configurati." * – WiredPrairie

+1

I ha commentato la sua pagina gh issuess e ora è fissa – ShrekOverflow

risposta

6

Come dici tu, rimuovendo il #! fa sì che il routing sia gestito dal server. L'API del nodo esegue quindi il dump dell'oggetto utente nella risposta.

Il problema è completamente indipendente da Angular: l'app viene servita solo dal nodo sulla route /. Angular utilizza quindi il valore hash per mostrare la pagina corretta.

Questo è probabilmente solo un problema con l'esempio fornito da MEAN. L'app in sé non è sicura, quando parlano di best practice che si riferiscono alla struttura del codice e alla configurazione piuttosto che alla demo rapida.

Si potrebbe chiedere loro, poiché probabilmente ci saranno persone che si basano sull'esempio e non risolvono i problemi di sicurezza.

8

È solo una configurazione dell'app. Se si modificano le routes.js da:

app.get('/articles', articles.all); 

a

app.get('/articles', auth.requiresLogin, articles.all); 

Poi, se si cerca di colpire l'url/articoli direttamente si ottiene il messaggio:

"Utente non è autorizzato"

Invece di JSON che elenca tutti gli articoli.