2012-12-09 18 views
6

Sto utilizzando una configurazione abbastanza semplice di Express + Mongoose + Passport + Connect-mongo e tutto funziona correttamente. L'unica cosa che mi lascia perplessa è che posso vedere il passport.unserializeUser chiamato anche per i file statici, che è - dal mio punto di vista applicativo - assolutamente inutile.Express: è possibile ignorare le sessioni per i file statici?

Posso capire che ci sono casi in cui si desidera che i file statici vengano serviti anche con una sorta di autorizzazione, ma mi chiedo come potrei "saltare" l'intero middleware di sessione nel caso in cui sto servendo un file statico .

(In un ambiente di produzione non ho potuto utilizzare i cookie per le attività)

+4

appena messo 'express.static' sopra tutti gli altri middleware –

+0

Funziona, e l'ho trovato fantastico. Jonathan, ti dispiacerebbe "rispondere" alla domanda così posso davvero darti un po 'di karma? :) – Claudio

+1

non lo faccio per i punti! –

risposta

11

Il middleware è richiamato nell'ordine in cui è stato aggiunto. Basta spostare il middleware statico per essere molto presto nel tuo app.js.

Ad esempio:

app.use(express.static(__dirname + "/public")); 
// any other middleware 
app.use(passport()); // or whatever your passport config looks like 
1

Si potrebbe servire i file statici da un altro dominio, che non memorizza i cookie. Ciò significa anche che non è possibile eseguire alcun controllo (di sicurezza) prima di servire quei file.

Questa tecnica viene utilizzata da vari siti, come StackOverflow, Facebook e LinkedIn.

+0

Sì, certo, e so (come recita la mia ultima frase). Ma mi chiedo se posso farlo a livello di codice :) – Claudio

+0

Non ho familiarità con Node.js + Express + Passport, ma potresti essere in grado di configurare il tuo server web per restituire il file richiesto se esiste e reindirizzare al tuo applicazione se la richiesta non è un file o una cartella esistente. – Arjan

Problemi correlati