2012-05-08 6 views
13

Tôi đang cố gắng thực hiện giải pháp như mô tả ở đâyTại sao Passport.js lại cho tôi lỗi trung gian?

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')); 

Hoạt động tốt

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

cho

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) 

Trả lời

26

Bạn vẫn cần phải app.use(app.router) sau Passport. Nếu không, tuyến đường của bạn sẽ chạy trước bất kỳ mã Hộ chiếu nào và đó là lý do bạn thấy lỗi. Điều này sẽ hoạt động:

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

Có thể giúp một người nào đó, tôi có cùng vấn đề. Cấu hình ứng dụng của tôi trông như thế này. Điều này gây ra lỗi.

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

}); 

Tôi phải sắp xếp lại như sau để hoạt động.

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

});