ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – Express Passport.js成功重定向不加载页面,请求保持挂起

2019-05-19 17:21:58  阅读:218  来源: 互联网

标签:javascript node-js express passport-js passport-local


我正在尝试使用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);
});

标签:javascript,node-js,express,passport-js,passport-local
来源: https://codeday.me/bug/20190519/1136724.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有