相关疑难解决方法(0)

Nodejs和PassportJs:在身份验证失败后,不调用passport.authenticate后重定向中间件

我没有登录页面,而是每个页面都有一个登录表单.我想将用户重定向回他们所在的同一页面,无论身份验证是否成功(使用适当的Flash消息)

请使用以下代码:

app.post('/login', validateLogin, passport.authenticate('local-login'), function(req, res) {

    var redirectUrl = '/'; 

    if(req.body.to.length > 0){
        redirectUrl = req.body.to;  
    }

    console.log("THIS IS ONLY CALLED IF passport.authenticate() IS SUCCESSFUL");
    res.redirect(redirectUrl);
});
Run Code Online (Sandbox Code Playgroud)

如果传递身份验证,我只会看到上面的最终中间件被调用.如果失败,那么护照似乎是以get请求的形式将我重定向到/ login.在我的应用程序中,此页面不存在.

如果我在护照验证功能中将其他选项对象作为参数传递,则此方法有效:

app.post('/login', validateLogin, passport.authenticate('local-login', {

successRedirect : '/', // redirect to the secure profile section
    failureRedirect : '/signup', // redirect back to the signup page. THIS IS JUST FOR TESTING TO SEE IF THE REDIRECT ON FAIL WORKS.
    failureFlash : true, // allow flash messages

}


));
Run Code Online (Sandbox Code Playgroud)

但在这样做时,我失去了选择将用户重定向到何处的能力.如果身份验证失败,护照似乎可以控制用户重定向到的位置.我怎样才能解决这个问题?或者这是一个错误?如果身份验证失败,必须护照身份验证是链中的最后一个中间件吗?

这是我的本地策略函数调用: …

node.js passport.js

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

node.js ×1

passport.js ×1