我正在尝试使用passport.js和本地护照进行基本的用户名/密码验证.
虽然failureRedirect完全按照它应该执行的操作(重定向到指定页面),但successRedirect对其指定页面的请求保持挂起状态,并在一段时间后返回“空响应”.
http://www.deviantpics.com/VdG
正如您在此图片中所看到的那样,当它请求仪表板时,它表示它的大小为0B,但是当我继续使用该仪表板而没有重定向时它表示它有1.6B.
我遍布Stackoverflow,我找不到能帮到我的答案.
在我疯狂之前,你能检查我的代码并提出一些建议.
这是护照加载代码
//set expression
var expressSession = require('express-session');
app.use(expressSession({
secret: credentials.session.secret
}));
//set passport
var passport = require('passport');
var localStrategy = require('./strategies/auth/local.js');
passport.use('local', localStrategy);
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
app.use(passport.initialize());
app.use(passport.session());
routes.js
module.exports = function(app){
//main
app.get('/', main.home);
app.get('/login', main.login);
app.get('/signup', main.signup);
app.post('/login', auth.loginLocal);
app.post('/signup', main.checkSignup);
//user
app.get('/user/dashboard', user.dashboard);
app.get('/user/addmemory', user.addMemory);
app.get('/user/memory', user.memory);
登录功能
exports.loginLocal = passport.authenticate('local', {
successRedirect: '/user/dashboard',
failureRedirect: '/login'
});
地方战略
var localAuthStrategy = new LocalStrategy(function(username, password, done) {
User.findOne({
username: username
}, function(err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: 'Incorrect username'
});
}
if (!user.validPassword(password)) {
return done(null, false, {
message: 'Incorrect password'
});
}
return done(null, user);
});
});
仪表板功能
exports.dashboard = function(req, res) {
res.render('user/dashboard', {
layout: 'user'
});
};
解决方法:
我找到了一个问题的答案,问题是用户模型没有在定义了serializeUser和deserializeUser的脚本中定义.
我无法弄清楚发生了什么,因为我没有在catch all handler中定义任何动作,所以要记住,确保捕获所有处理程序,以了解发生了什么
app.use(function(err, req, res, next) {
console.log(err);
});
原文地址:https://codeday.me/bug/20190519/1136724.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。