首页 > 解决方案 > 如何在护照的 deserializeUser 函数中获取 req.params?

问题描述

我的 serializeUser 函数如下所示:

passport.serializeUser(function (req, user, done) {
  console.log("serialize")
  console.log(req.params)
  done(null, user.id);
});

我的反序列化用户函数如下所示:

passport.deserializeUser(function (req, id, done) {
  console.log("deserialize")
  console.log(req.params)
  console.log(id)
  // ...... Some other code
});

我的路线是这样的:

/api/:name/list
/api/product/:name
....

在 serializeUser 函数中,我可以使用以下命令获取名称参数:req.params.name

在 deserializeUser 函数中,req.params 是一个空对象 {}。

如何访问 deserializeUser 函数中的 req.params.name ?

标签: node.jsexpresspassport.js

解决方案


使用上面的代码,只有user.id在会话中被序列化。您可以将 id 和参数包装在一个对象中并对其进行序列化,而不是仅仅序列化 id:

passport.serializeUser(function (req, user, done) {
  done(null, { id: user.id, params: req.params} );
});

passport.deserializeUser(function (serializedData, done) {     
  console.log(serializedData.params)
  console.log(serializedData.id)
  // ...... Some other code
});

推荐阅读