javascript - 在 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/文档,但我无法弄清楚如何做我想做的事
解决方案
res.redirec
你可以像这样在快递中使用:
if(true){
res.redirect('/edit-profile')
}
else{
//do somthing
}
手动检查条件,做你想做的,检查这篇关于redirect in express的文章
推荐阅读
- spring-webflux - 在 doOnComplete 或 doOnCancel 连接完成时,反应式 WebSocketSession 无法检索 .closeStatus
- javascript - 努力使用 react.js 在网页中显示智能合约信息
- vue.js - 从 Composition API 访问 Nuxt 自定义插件
- javascript - 如何有条件地在一行中创建对象属性?
- c# - 将对象的 JSON 字符串反序列化为字符串
- ios - iOS Firebase 动态链接:安装后获取动态链接不是深度链接
- mpandroidchart - MPAndroidChart 带有自定义标签的水平条形图,如果 x 轴标签值非常大,左侧的图形会被裁剪
- java - 是否可以使用 Java 和 AppEngine 添加 Content-Security-Policy 标头?
- r - R - [DESeq2] - 从已经标准化计数的 csv 中制作 DESeq 数据集对象
- slurm - 如何创建一个批处理脚本,它提交多个作业并将每个作业分配到一个单独的节点上?