如何在 Local Passport 会话中传递多个参数?
How to pass multiple paramaters in Local Passport sessions?
我正在尝试将 2 个从 Mongoose 返回的变量传递到 'done' 字段以从 EJS 页面访问它。我让它与 1 个变量一起工作,但 2 个变量不起作用。我尝试将它包装在 JSON 中,但它仍然不起作用。有帮助吗?
我尝试了 2 个变量的代码:
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
Products.find({ OwnerEmail: user.email }).then((products) => {
done(err, {user: user, products: products})
})
})
})
有效代码(1 个变量):
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user)
})
})
我对护照还很陌生。
注意 passport.deserializeUser
会将传递的对象添加到 req.user
属性。这意味着当访问用于 EJS 模板渲染的对象时,您将需要遍历 req.user
以获取预期值。
ejs.render(file, { user: req.user.user, products: req.user.products });
要清理嵌套属性,我可以尝试使用扩展语法。
举个例子:
// passport.deserializeUser
done(err, { ...user, products: products})
// Render Call
// Extract out just user data into user variable.
const user = (({ products, ...others }) => others)(req.user);
ejs.render(file, { user, products: req.user.products });
我正在尝试将 2 个从 Mongoose 返回的变量传递到 'done' 字段以从 EJS 页面访问它。我让它与 1 个变量一起工作,但 2 个变量不起作用。我尝试将它包装在 JSON 中,但它仍然不起作用。有帮助吗?
我尝试了 2 个变量的代码:
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
Products.find({ OwnerEmail: user.email }).then((products) => {
done(err, {user: user, products: products})
})
})
})
有效代码(1 个变量):
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user)
})
})
我对护照还很陌生。
注意 passport.deserializeUser
会将传递的对象添加到 req.user
属性。这意味着当访问用于 EJS 模板渲染的对象时,您将需要遍历 req.user
以获取预期值。
ejs.render(file, { user: req.user.user, products: req.user.products });
要清理嵌套属性,我可以尝试使用扩展语法。
举个例子:
// passport.deserializeUser
done(err, { ...user, products: products})
// Render Call
// Extract out just user data into user variable.
const user = (({ products, ...others }) => others)(req.user);
ejs.render(file, { user, products: req.user.products });