Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 Express Passport.js成功';无法加载页面,请求保持挂起状态_Javascript_Node.js_Express_Passport.js_Passport Local - Fatal编程技术网

Javascript Express Passport.js成功';无法加载页面,请求保持挂起状态

Javascript Express Passport.js成功';无法加载页面,请求保持挂起状态,javascript,node.js,express,passport.js,passport-local,Javascript,Node.js,Express,Passport.js,Passport Local,我正在尝试使用passport.js和passport local进行基本的用户名/密码验证 虽然failureRedirect确实执行了它应该执行的操作,(重定向到指定的页面),successRedirect对其指定页面的请求保持挂起状态,一段时间后,它返回空响应 正如您在这张图片中看到的,当它请求仪表板时,它说它的大小是0B,但当我在仪表板上不重定向时,它说它有1.6B 我找遍了Stackoverflow,找不到对我有帮助的答案 在我发狂之前,你能检查一下我的代码并提出一些建议吗 这是护照

我正在尝试使用passport.js和passport local进行基本的用户名/密码验证

虽然
failureRedirect
确实执行了它应该执行的操作,(重定向到指定的页面),
successRedirect
对其指定页面的请求保持挂起状态,一段时间后,它返回
空响应

正如您在这张图片中看到的,当它请求仪表板时,它说它的大小是
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处理程序中定义任何操作,所以要记住,确保定义了catch-all处理程序以了解发生了什么

app.use(function(err, req, res, next) {
    console.log(err);
});

几天前我遇到了与您相同的问题,我发现我忘了在
serializeUser
deserializeUser
函数的末尾加括号。
实际上,我使用了
passport local mongoose
包来实现相应的功能。但必须注意的是,在
app.use()
中,函数是为所有模板文件调用和执行的,因此,我们确实在函数名中使用了括号。

同样地,对于我来说,我忘记了将括号放在serializeUser()的末尾-默默地没有重定向,但没有错误。更糟糕的是,当输入错误的用户详细信息时,该应用程序工作正常。