Chiarimenti sui malintesi su un backend di Flask e sul rendering lato client

4

Sto costruendo un sito web e lungo la strada ho incontrato molte cose che non sapevo e speravo di ottenere un aiuto nella comprensione di alcuni di loro.

Ho iniziato a costruire un sito web usando Flask e il linguaggio dei modelli di Jinja. Questo è stato molto intuitivo e facile da capire: il cliente fa una richiesta, il server verifica tutte le richieste e poi fornisce l'intera pagina di lavoro in un colpo solo.

Quindi volevo aggiornare il mio frontend per usare ReactJS. Dalla mia ricerca ho scoperto che potrei fare il percorso di rendering lato server se ho usato una libreria come python-react , ma ho optato invece per il rendering lato client. Ciò significava un paio di cose

  • Avrò bisogno di un server di frontend (ad es. node.js) per il rendering del frontend
  • Dovrò ridefinire il mio backend di Flask per comportarsi come un'API

Quindi, quando un cliente fa una richiesta, per esempio, sulla home page, il processo sarà simile a questo (se ho capito bene?):

Supponendo che io sia corretto fino a questo punto, la mia domanda è, come appare il diagramma sopra nel caso di invio di un modulo?

Un modulo richiede che un token CSRF sia incorporato in esso al momento del rendering, ovvero il token viene creato sul server Frontend. Ma poi, come fa il Backend a verificare quel token? Anche l'autenticazione deve avvenire sul server Frontend? Non sono chiaro su come si integrano frontend e backend.

    
posta turnip 10.12.2018 - 15:03
fonte

2 risposte

8

Non sei corretto sulla necessità di server separati front-end e back-end. Hai solo bisogno di un server , che può essere il tuo server basato su Flask, che

  • fornisce una pagina HTML (statica) quando gli utenti accedono all'URL del punto di ingresso ( /home nel diagramma)
  • fornisce una serie di file JS (statici) per l'implementazione ReactJS del front-end
  • fornisce un'API per il contenuto dinamico del sito.

Poiché esiste un solo server, la gestione dei token CSRF non dovrebbe essere un problema.

    
risposta data 10.12.2018 - 16:14
fonte
0

Per i dubbi CSRF in un'API usando Flask puoi usare uno dei plugin come SeasSurf . Fondamentalmente il token CSRF verrà creato sul server back-end e quindi memorizzato nel client tramite un cookie che viene passato sulle risposte da quel server. Quindi i valori csrf vengono passati e verificati nelle richieste Post al server back-end all'interno dell'intestazione della richiesta.

    
risposta data 13.12.2018 - 22:13
fonte

Leggi altre domande sui tag