在passport的deserializeUser函数中,无法直接获取req.params。因为deserializeUser函数是在用户登录验证成功后,将用户信息存储在session中的过程中调用的,而req.params用于获取路由中的参数,与session无关。
通常情况下,可以通过在登录验证成功后,将req.params的值存储在session中的自定义属性中,在deserializeUser函数中再从session中获取该自定义属性的值,从而实现获取req.params的目的。
以下是一个示例:
app.post('/login', passport.authenticate('local', {
successRedirect: '/dashboard',
failureRedirect: '/login',
}), function(req, res) {
req.session.myParam = req.params.myParam; // 将req.params的值存储在session的自定义属性中
res.redirect('/dashboard');
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
if (err) {
return done(err);
}
user.myParam = req.session.myParam; // 获取req.params的值
done(null, user);
});
});
上述示例中,假设登录验证成功后,req.params的值是一个名为myParam的参数,将该值存储在session的自定义属性中,然后在deserializeUser函数中通过req.session.myParam获取该值,并赋值给user对象的myParam属性。
请注意,以上示例仅为演示目的,实际情况中可能需要根据具体的需求和框架进行相应的调整和改进。
腾讯云相关产品和产品介绍链接地址:暂无提供。
领取专属 10元无门槛券
手把手带您无忧上云