giv*_*ivo 3 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('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'));
});
Run Code Online (Sandbox Code Playgroud)
我在'/ login'路径上有一个简单的帖子表单,我通过在用户名和密码字段中输入我想要的任何内容来测试我的服务器,然后浏览器将帖子请求发送到'/ login',然后服务器成功到达该行:
console.log('login using ' + username);
Run Code Online (Sandbox Code Playgroud)
结果是服务器将值1(id:1)返回给浏览器并发生500内部服务器错误.
我错过了什么?
giv*_*ivo 10
发现问题..
在serializeUser中调用done函数时,我发送了我的user.id作为错误对象.
要解决这个问题,我只需更换:
passport.serializeUser(function(user, done) {
done(user.id);
});
Run Code Online (Sandbox Code Playgroud)
至:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |