Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
Node.js 使用Express在Passport js本地策略中重定向失败_Node.js_Express_Passport.js - Fatal编程技术网

Node.js 使用Express在Passport js本地策略中重定向失败

Node.js 使用Express在Passport js本地策略中重定向失败,node.js,express,passport.js,Node.js,Express,Passport.js,我是新来的。由于某种原因,我的登录重定向总是失败,并以failureRedirect结束。下面是代码片段。 当我单击Login时,作为响应,它会将我重定向回登录页面,因为failureRedirect设置为/Login。没有其他错误消息。 有什么方法可以调试passport js或任何其他建议来解决这个问题吗 $(“#登录按钮”)。单击(函数(){ var username=$(“#登录电子邮件”).val(); var password=$(“#登录密码”).val(); var form=n

我是新来的。由于某种原因,我的登录重定向总是失败,并以failureRedirect结束。下面是代码片段。 当我单击Login时,作为响应,它会将我重定向回登录页面,因为failureRedirect设置为/Login。没有其他错误消息。 有什么方法可以调试passport js或任何其他建议来解决这个问题吗

$(“#登录按钮”)。单击(函数(){
var username=$(“#登录电子邮件”).val();
var password=$(“#登录密码”).val();
var form=new FormData();
表单。附加(“用户名”,用户名);
表单。追加(“密码”,密码);
//警报('email/pass:'+username+“,“+password”);
变量设置={
“异步”:true,
“跨域”:正确,
“url”:“/登录”,
“方法”:“发布”,
“标题”:{
“缓存控制”:“无缓存”,
“邮递员代币”:“ab1b08a7-1a77-97e9-1039-92479d10b68b”
},
“processData”:false,
“contentType”:false,
“mimeType”:“多部分/表单数据”,
“数据”:{“用户名”:用户名,“密码”:密码}
}
$.ajax(设置).done(函数(响应){
控制台日志(响应);
});
});
路线:

app.post('/login',passport.authenticate('local-login',
{            successRedirect : '/dashboard', 
            failureRedirect : '/login'
}));
Passport.js

 passport.use(
        'local-login',
        new LocalStrategy({
    usernameField: 'username',
    passwordField: 'password',
    passReqToCallback: true
},
        function(req, username, password, done) {               
            connection.query("SELECT * FROM user WHERE user_name = ?",[username], function(err, rows){
                if (err)
                    return done(err);
                if (!rows.length) {
                    return done(null, false});
                }

                // if the user is found but the password is wrong
                if (!bcrypt.compareSync(password, rows[0].password))
                    return done(null, false);     
                // all is well, return successful user
                return done(null, rows[0]);
            });
        })
    );

我认为您可能正在使用这段代码进行sql注入。除非您的sql模块监视sql注入。如果username中有一个sql语句呢?您是否也可以显示您的主express配置代码(您在哪里配置所有中间件等)?我无法找出问题所在。所以我一步一步地遵循passport js教程并重新创建了应用程序。现在一切都好了。谢谢你们的回复。