2012-12-09 15 views
6

Używam dość prostej konfiguracji programu Express + Mongoose + Passport + Connect-mongo i wszystko działa poprawnie. Jedyne co mnie zastanawia to to, że widzę, że passport.unserializeUser jest wywoływany nawet dla plików statycznych, co jest - z mojego punktu widzenia aplikacji - absolutnie bezcelowe.Express: czy można ominąć sesje dla plików statycznych?

Rozumiem, że istnieją przypadki, w których chcesz, aby pliki statyczne były wyświetlane również w ramach autoryzacji, ale zastanawiam się, jak mogę "pominąć" całe oprogramowanie pośredniczące sesji w przypadku, gdy obsługuję plik statyczny .

(W środowisku produkcyjnym nie mogłem używać cookies do aktywów)

+4

wystarczy umieścić 'express.static' przede wszystkim drugiej pośredniej –

+0

to działa, i uważam, że to fantastyczne. Jonathan, czy mógłbyś "odpowiedzieć" na to pytanie, więc mogę ci dać trochę karmy? :) – Claudio

+1

Nie robię tego dla punktów! –

Odpowiedz

11

Oprogramowanie pośrednie jest wywoływane w kolejności, w jakiej zostało dodane. Po prostu przenieś statyczne oprogramowanie pośrednie, aby być bardzo wcześnie w swojej app.js.

Na przykład:

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

Można służyć statycznych plików z innej domeny, która nie przechowuje żadnych ciasteczek w ogóle. Oznacza to również, że nie można wykonywać żadnych kontroli (bezpieczeństwa) przed podaniem tych plików.

Ta technika jest używana przez różne witryny, takie jak StackOverflow, Facebook i LinkedIn.

+0

Tak, oczywiście, i wiem (jak podaje moje ostatnie zdanie). Ale zastanawiam się, czy mogę to zrobić programowo :) – Claudio

+0

Nie jestem wystarczająco zaznajomiony z Node.js + Express + Passport, ale możesz być w stanie skonfigurować swój serwer sieciowy, aby zwrócić żądany plik, jeśli istnieje i przekierować do twojego wniosek, jeśli wniosek nie jest istniejącym plikiem lub folderem. – Arjan

Powiązane problemy