首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用passport-google-oauth向req.user添加额外的数据

使用passport-google-oauth向req.user添加额外的数据
EN

Stack Overflow用户
提问于 2018-09-25 17:05:32
回答 2查看 1.1K关注 0票数 0

我有一个路由,这意味着使用google oauth passport策略对用户进行身份验证,(/auth/google)我还想将额外的数据作为查询传递到该路由(/auth/google?someParam=SOME_PARAM)中的url中,当我在(/auth/google/callback)中从谷歌获取这些数据时,我想将这些数据添加到req.user中。问题是,我可以通过/auth/google访问这个查询,但谷歌会将我重定向到/auth/google/callback,它不再能够访问这些数据。

注意-由于设计的限制,我不能做它与外部源作为数据库。

passport-谷歌docs

代码:

代码语言:javascript
复制
// auth.js 

router.get(
  "/",
  (req, res, next) => {
    let siteName = req.query.siteName;
    let pageName = req.query.pageName;
    console.log("siteName", siteName);
    return next();
  },
  passport.authenticate("google", {
    scope: ["https://www.googleapis.com/auth/plus.login"]
  })
);

module.exports = router;




// authCb.js

router.get(
  "/",
  passport.authenticate("google", {
    scope: ["https://www.googleapis.com/auth/plus.login"],
    failureRedirect: "/"
  }),
  (req, res) => {
    console.log(req.user);
    res.send(req.user);
  }
);

module.exports = router;





// app.js

app.use("/auth/google", auth);
app.use("/auth/google/callback", authCb);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-25 17:41:05

在向google发送身份验证请求之前,您必须将参数存储在会话中。然后,在重定向之后,从会话中获取参数。

代码语言:javascript
复制
// auth.js 
router.get(
  "/",
  (req, res, next) => {
    req.session.lastQuery = req.query;
    return next();
  },
  passport.authenticate("google", {
    scope: ["https://www.googleapis.com/auth/plus.login"]
  })
);

module.exports = router;

// authCb.js

router.get(
  "/",
  passport.authenticate("google", {
    scope: ["https://www.googleapis.com/auth/plus.login"],
    failureRedirect: "/"
  }),
  (req, res) => {
    const { lastQuery } = req.session;
    console.log(lastQuery);
  }
);

module.exports = router;
票数 1
EN

Stack Overflow用户

发布于 2018-09-26 08:11:17

您应该参考Google的文档。您可以使用"state“参数来传递用户返回到您的站点后想要返回的任何数据。这是此参数的主要用途。您可以查看详细信息here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52494403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档