首页 > 解决方案 > 在 passport.authenticate successRedirect 中使用条件

问题描述

所以,我当前的代码有效,就是这样

这是路线

router.get('/user/login', renderLoginForm);
router.post('/user/login', login);

这是控制器

userCtrl.login = passport.authenticate('local', 
    
      failureRedirect: '/user/login',
    successRedirect: '/user/edit-perfil',
     failureFlash: true
      );

这是来自 passport.js 的所有代码

passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password'
},
    async (email, password, done) => {
    
        // Match email user
        const user = await User.findOne({email})
        console.log('ya busque el usuario')
        if (!user) {
            console.log('estoy en el primer if')
            console.log('usuario no encontrado')
            return done(null, false, {message: 'Usuario no encontrado'});
            
        } else {
            console.log('estoy en el primer else')
            // Match password user
            const match = await user.matchPassword(password);
            if (match){
                console.log('estoy en el segundo if')
                return done(null, user)
            } else {
                console.log('estoy el el segundo else')
                console.log('contrasena incorrecta')
                return done(null, false, {message: 'Contraseña Incorrecta'});
            }
        }
    }))

passport.serializeUser((user, done) => {
    done(null, user.id);
});

passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => {
        done (err, user);
    })
})

如果没有 ussign sucessRedirect 和其他选项,我找不到尝试进行自定义重定向的方法,因为我想在注册新用户时做到这一点,我想让他们转到编辑配置文件页面,如果不是新用户用户只需转到索引

我查看了http://www.passportjs.org/docs/authenticate/文档,但我无法弄清楚如何做我想做的事

标签: javascriptnode.jspassport.js

解决方案


res.redirec你可以像这样在快递中使用:

if(true){
res.redirect('/edit-profile')
}
else{
//do somthing
}

手动检查条件,做你想做的,检查这篇关于redirect in express的文章


推荐阅读