2016-03-01 6 views
2

Я делаю почтовый запрос/логин с моей электронной почтой и паролем, паспорт удостоверяет его правильно, ошибка не вызывается, а затем возвращается res.redirect ('/ profile') запускается слишком. Но он возвращает 404.Узел переадресации паспорта в 404

Эти два входа в функции я пытался, оба из них приводят «GET/профиль 404», несмотря на то, когда я «GET/профиль» обычно возвращает 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); 
}); 

здесь/профиль

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('/'); 
} 

ни консоль журнала в isloggedin или профиль печатается

и, наконец, мой 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; 

Кто-нибудь знает, почему это происходит?

ответ

0

Вы уверены, что вид profile существует и находится правильно в отношении двигателя взгляда? Когда вы делаете «GET/profile» обычно isLoggedIn перенаправляете на '/', потому что req.isAuthenticated() - false, поэтому проблема заключается в том, когда пользователь входит в систему и вызывается res.render('profile');. Убедитесь, что у вас есть настройка вида двигателя, похожее на это:

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

и тому profile вид находится внутри папки взглядов.

+0

В итоге мне пришлось пройти паспорт с помощью маршрутов. была проблема с сериализацией или чем-то – Adamater

Смежные вопросы