2012-05-08 24 views
13

estoy tratando la solución como se describe aquí¿Por qué Passport.js me da un error de middleware?

https://github.com/jaredhanson/passport/issues/14

app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(app.router); 
app.use(express.static(__dirname + '/public')); 

Funciona bien

app.use(app.router); 
app.use(express.static(__dirname + '/public')); 
app.use(passport.initialize()); 
app.use(passport.session()); 

da

DEBUG: Error: passport.initialize() middleware not in use 
    at IncomingMessage.<anonymous> (/.../node_modules/passport/lib/passport/http/request.js:30:30) 
    at Context.<anonymous> (/.../node_modules/passport/lib/passport/middleware/authenticate.js:92:11) 
    at Context.<anonymous> (/.../core/node_modules/passport/lib/passport/context/http/actions.js:21:25) 
    at Strategy.success (native) 

Respuesta

26

Todavía es necesario app.use(app.router) después de pasaporte. De lo contrario, su ruta se ejecutará antes que cualquier código de pasaporte, y es por eso que ve el error. Esto debería funcionar:

app.use(express.static(__dirname + '/public')); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(app.router); 
0

Podría ayudar a alguien, tuve el mismo problema. Mi aplicación de configuración se veía así. Esto causó el error.

app.configure(function() { 
    .... 
app.use(app.router);  
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(express.static(path.join(__dirname, 'public'))); 

}); 

Tuve que reordenar de la siguiente manera para que funcionase.

app.configure(function() { 
    .... 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(app.router);  
app.use(express.static(path.join(__dirname, 'public'))); 

}); 
Cuestiones relacionadas