节点js护照redirect结果在404

我正在通过电子邮件和密码进行/login,护照正确authentication,错误未被调用,然后返回res.redirect('/ profile')也会运行。 但是它返回404。

这些是我试过的两个login函数,它们都会导致“GET / profile 404”,即使当我做“GET / profile”时,它通常会返回200

// router.post('/login', passport.authenticate('local-login', { // successRedirect : '/profile', // redirect to the secure profile section // failureRedirect : '/login' // redirect back to the signup page if there is an error // })); router.post('/login', function(req, res, next) { passport.authenticate('local-login', function(err, user) { if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { if (err) { return next(err); } console.log("thisgetsrun") return res.redirect('/profile'); }); })(req, res, next); }); 

这里是/ profile

 router.get('/profile', isLoggedIn, function(req, res) { console.log("profile") res.render('profile'); }); 

和isLoggedIn

 function isLoggedIn(req, res, next) { console.log("is logged in") if (req.isAuthenticated()) return next(); res.redirect('/'); } 

无论是控制台loginisloggedin或configuration文件打印

最后是我的app.js

 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var passport = require('passport'); require('./config/passport')(passport) var mongo = require('mongodb'); var monk = require('monk'); var db = monk("mongodb........."); var routes = require('./routes/index'); var users = require('./routes/users'); var session = require('express-session'); var app = express(); .... app.use(function(req,res,next){ req.db = db; next(); }); app.use(session({ secret: 'blah' })); // session secret app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.use('/', routes); app.use('/users', users); app.use(function(err, req, res, next) { res.status(404); res.render('404'); }); module.exports = app; 

有谁知道这是为什么发生?

你确定视图profile存在并且相对于视图引擎正确定位吗? 当你做“GET / profile”通常isLoggedInredirect到“/”,因为req.isAuthenticated()false ,所以问题是当用户login和res.render('profile'); 叫做。 确保你有一个类似如下的视图引擎设置:

 // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); 

profile视图是在视图文件夹内。