【问题标题】:accessing error message in passport js node在护照 js 节点中访问错误消息
【发布时间】:2020-08-09 19:40:16
【问题描述】:

这是我的用户认证护照本地策略

passport.use(
    new Localstrategy({usernameField:'email'},(email,pass,done)=>{        
        console.log(pass);
        user.findOne({email:email}).then(user=>{
            if(!user){
                return done(null,false,{message:"the email is not registered"})
            }
            bcrypt.compare(pass,user.pass,(err,isMatched)=>{
                if(err){throw err}
                if(isMatched){
                   
                    return done(null,user);
                }
                else{
                    
                    return  done(null,false,{message:"incorrect password"})
                }
            })
        }).catch(e=>console.log(e))
    })
)

这是我的登录路径

app.post("/login",async function(req,res,next){
    passport.authenticate('local',{
        successRedirect:'/',
        failureRedirect:"/register"
    })(req,res,next);
})

如果身份验证失败,我会尝试发送错误消息

正如您从代码中看到的那样,我在出现故障时放了一些消息,但不知道如何在路由中访问它们有什么帮助吗? 示例:

        if(!user){
            return done(null,false,{message:"the email is not registered"})
        }

在上面的代码中如何访问我的failureRedirect路由中的消息?

【问题讨论】:

    标签: node.js mongodb express mongoose passport.js


    【解决方案1】:

    根据this document,您可以使用Flash Messages:

    passport.use(
      new Localstrategy({usernameField:'email'},(email,pass,done)=>{        
        console.log(pass);
        user.findOne({email:email}).then(user=>{
            if(!user){
                return done(null,false,{message:"the email is not registered"})
            }
            bcrypt.compare(pass,user.pass,(err,isMatched)=>{
                if(err){throw err}
                if(isMatched){
                    return done(null,user);
                }
                else{
                    return  done(null,false,{message:"incorrect password"})
                }
            })
        }).catch(e=>{
          console.log(e); 
          return done(e);
        })
    })
    )
    

    和路线:

    app.post("/login",passport.authenticate('local',{
        successRedirect:'/',
        failureRedirect:"/register",
        failureFlash : true
    }));
    

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2018-05-16
      • 2017-08-18
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多