2016-04-26 26 views
5

Ho creato un'applicazione Koa che utilizza il passaporto con una strategia di autenticazione locale. Mi piacerebbe utilizzare il modulo koa-generic-session in modo da poter memorizzare i dati della sessione in Redis.Come utilizzare il passaporto con koa-generic-session()?

Come utilizzare questi due insieme?

ho trovato questo repo che fa questo, ma in realtà non sembra usare le sessioni e non sono sicuro se sia corretto: https://github.com/dozoisch/koa-react-full-example

risposta

3

(Disclaimer: io non sono a conoscenza Koa, ma Sono con Express e Passport.)

Ho guardato attraverso il link che hai fornito, ed ecco come usano koa-generico-sessione con passaporto.

Nel file server.js, le seguenti righe si riferiscono alla configurazione di Passport.

08 - const passport = require("koa-passport"); 
13 - const config = require("./config/config"); 

38 - require("./config/passport")(passport, config); 
40 - require("./config/koa")(app, config, passport); 

La riga 38 è il tradizionale file di configurazione del passaporto, che semplicemente imposta la serializzazione e la deserializzazione.
La riga 40 introduce koa.js e le passa l'app, il file di configurazione e le variabili del passaporto.

Il seguente codice è da koa.js:

04 - const session = require("koa-generic-session"); 

18 - app.keys = config.app.keys; 

Guardando koa.js, koa-generic-sessione viene assegnato alla sessione variabile. Questa variabile è chiamato più tardi qui:

35 - app.use(session({ 
36 -  key: "koareactfullexample.sid", 
37 -  store: new MongoStore({ url: config.mongo.url }), 
38 - })); 

On line 18, app.keys viene inizializzato come la documentazione per koa-generic-session inviti a presentare. Mentre il progetto che hai collegato utilizza un MongoStore con koa-generic-session, puoi semplicemente sostituire quel costruttore con un costruttore koa-redis, come mostrato nella documentazione koa-generic-session.

Infine, passaporto viene inizializzato:

41 - app.use(passport.initialize()); 
42 - app.use(passport.session()); 

Questo codice è simile all'utilizzo di Passaporto con espresso, come questo è tutto passaporto deve gestire l'autenticazione attraverso una sessione.