Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 护照+;节点-req.isauthenticated不是Object.isLoggedIn上的函数_Node.js_Express_Passport.js_Passport Local - Fatal编程技术网

Node.js 护照+;节点-req.isauthenticated不是Object.isLoggedIn上的函数

Node.js 护照+;节点-req.isauthenticated不是Object.isLoggedIn上的函数,node.js,express,passport.js,passport-local,Node.js,Express,Passport.js,Passport Local,我的密码有一个错误,passport函数有一个错误 我遵循了本教程: 我从nodemon server.js中的/routes文件中得到一个错误: TypeError:req.isAuthentiated不是一个函数 当我尝试登录时,浏览器窗口中出现此错误(我可以注册,数据库正在存储用户): 这是一个passport函数,我不知道如何解决这个问题 server.js: var express = require('express'); var app = express(); var

我的密码有一个错误,passport函数有一个错误

我遵循了本教程:

我从nodemon server.js中的/routes文件中得到一个错误:

TypeError:req.isAuthentiated不是一个函数

当我尝试登录时,浏览器窗口中出现此错误(我可以注册,数据库正在存储用户):

这是一个passport函数,我不知道如何解决这个问题

server.js:

var express  = require('express');
var app      = express();
var port     = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash    = require('connect-flash'); // messages stored in session 

var morgan       = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
var session      = require('express-session');

var configDB = require('./config/database.js');

// configuration 
mongoose.connect(configDB.url); // connect to our database

require('./config/passport')(passport); // pass passport for configuration

// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.json()); // get information from html forms
    app.use(bodyParser.urlencoded({ extended : true})); // for express 4
app.set('view engine', 'ejs'); // set up ejs for templating

// required for passport
app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session

// routes 
require('./models/routes.js')(app, passport); 
// load our routes and  pass in our app and fully configured passport

// launch      
app.listen(port);
console.log('The magic happens on port ' + port);
routes.js

    var flash = require('connect-flash');
var express = require('express');
var router = express.Router();

//module.exports = function (app, passport){
module.exports = function (app, passport){
    // get homepage
    app.get('/', function(req, res){
        res.render('index.ejs');
    });
    // show login form
    app.get('/login', function(req, res){
        // render page and pass in any flash data i(f there is any)
        res.render('login.ejs', {message: req.flash('loginMessage') });
    });

    // process login form
    app.get('/signup', function(req, res) {
        //render page, pass in any flash data (if there is any)
        res.render('signup.ejs', {message: req.flash('signupMessage') });
    });

    // process signup form
    // app.post('/signup', do all passport stuff here);

    // PROFILE SECTION
    // route to middleware to verify this (w/ isLoggedIn fn)
    app.get('/profile', isLoggedIn, function(req, res) {
        res.render('profile.ejs', {
            user: req.user //get user out of session pass to template
        });
    });

    // LOG OUT
    app.get('/logout', function(req, res) {
        req.logout(); // provided by passport
        res.redirect('/');
    });

      // process the signup form
    app.post('/signup', passport.authenticate('local-signup', {
        successRedirect : '/profile', // redirect to the secure profile section
        failureRedirect : '/signup', // redirect back to the signup page if there is an error
        failureFlash : true // allow flash messages
    }));

    // process the login form
    app.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
        failureFlash : true // allow flash messages
    }));

 return router;
};


// route to middleware to make sure user is logged in
function isLoggedIn(req, res, next) {

    // if user is logged in - 
    if (req.isAuthentiated())
        return next();

    // if they aren't redirect them to home
    res.redirect('/');
}
函数isLoggedIn(请求、恢复、下一步){

if(req.isAuthenticated())//您是否尝试过
req.user.authenticated
而不是
req.isAuthenticated()
?isAuthenticated?小错误?本教程取自使用express 3.0。可能
isAuthenticated()
已在4.0版中删除?谢谢,就这样!!拥有一双新眼睛总是值得的。我不能告诉你我在这方面花了多长时间。没问题。来帮忙。
    var flash = require('connect-flash');
var express = require('express');
var router = express.Router();

//module.exports = function (app, passport){
module.exports = function (app, passport){
    // get homepage
    app.get('/', function(req, res){
        res.render('index.ejs');
    });
    // show login form
    app.get('/login', function(req, res){
        // render page and pass in any flash data i(f there is any)
        res.render('login.ejs', {message: req.flash('loginMessage') });
    });

    // process login form
    app.get('/signup', function(req, res) {
        //render page, pass in any flash data (if there is any)
        res.render('signup.ejs', {message: req.flash('signupMessage') });
    });

    // process signup form
    // app.post('/signup', do all passport stuff here);

    // PROFILE SECTION
    // route to middleware to verify this (w/ isLoggedIn fn)
    app.get('/profile', isLoggedIn, function(req, res) {
        res.render('profile.ejs', {
            user: req.user //get user out of session pass to template
        });
    });

    // LOG OUT
    app.get('/logout', function(req, res) {
        req.logout(); // provided by passport
        res.redirect('/');
    });

      // process the signup form
    app.post('/signup', passport.authenticate('local-signup', {
        successRedirect : '/profile', // redirect to the secure profile section
        failureRedirect : '/signup', // redirect back to the signup page if there is an error
        failureFlash : true // allow flash messages
    }));

    // process the login form
    app.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
        failureFlash : true // allow flash messages
    }));

 return router;
};


// route to middleware to make sure user is logged in
function isLoggedIn(req, res, next) {

    // if user is logged in - 
    if (req.isAuthentiated())
        return next();

    // if they aren't redirect them to home
    res.redirect('/');
}
function isLoggedIn(req, res, next) {
    if (req.isAuthenticated())  // <-- typo here
        return next();
    res.redirect('/');
}