Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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
Javascript Passport.js始终返回500个内部错误_Javascript_Node.js_Express_Passport.js - Fatal编程技术网

Javascript Passport.js始终返回500个内部错误

Javascript Passport.js始终返回500个内部错误,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,我试图使用passport.js构建一个非常简单的身份验证api,但是我的代码总是返回500个内部错误状态 var express = require('express'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var expressSession = require('express-session'); var logger = require('morga

我试图使用passport.js构建一个非常简单的身份验证api,但是我的代码总是返回500个内部错误状态

var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var expressSession = require('express-session');
var logger = require('morgan');
var path = require('path');
var passport = require('passport');
var passportLocal = require('passport-local');    

var app = express();

app.set('port', process.env.PORT || 3000);
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(expressSession({
    secret: process.env.SESSION_SECRET || 'secret',
    resave: false,
    saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());    

passport.use(new passportLocal.Strategy(function (username, password, done) {
    console.log('login using ' + username);
    done(null, { id: 1, username: 'test', password: '12345'});
}));

passport.serializeUser(function(user, done) {
    done(user.id);
});

passport.deserializeUser(function(id, done) {
    done({ id: id, username: 'test', password: '12345' });
});

app.get('/', function(req, res) {
    res.render('index', {
        isAuthenticated: req.isAuthenticated(),
        user: req.user
    });
});

app.get('/login', function(req, res) {
    res.render('login');
});

app.post('/login', passport.authenticate('local'), function(req, res) {
    res.redirect('/');
});    

app.listen(app.get('port'), function(){
    console.log('server is listenning on port ' + app.get('port'));
});
我在我的“/login”路径上有一个简单的post表单,我通过在用户名和密码字段中输入任何我想要的内容来测试我的服务器,然后浏览器将post请求发送到“/login”,然后服务器成功到达以下行:

console.log('login using ' + username);
结果是服务器向浏览器返回值1(id:1),并返回500个内部服务器错误

我遗漏了什么?

发现了问题

调用serializeUser中的done函数时,我将user.id作为err对象发送

为了解决这个问题,我简单地替换了:

passport.serializeUser(function(user, done) {
    done(user.id);
});
致:


检查你在FireBug或Chrome开发工具的网络视图中发送的内容。。。500表示您的服务器出现故障。您的JSI没有出现相同的问题,只是在设置我的
passport
策略时在回调中出现了问题。
passport.serializeUser(function(user, done) {
    done(null, user.id);
});