代码之家  ›  专栏  ›  技术社区  ›  Jarek Ostrowski

在express(passport.js)中从google身份验证获取用户ID

  •  2
  • Jarek Ostrowski  · 技术社区  · 8 年前

    我正在尝试获取用户。用户登录后的id,但我无法确定。

    当我在Postman(../api/users/829ug309hf032j)中执行硬获取请求时,我得到了该用户,但我不知道如何在获取请求之前设置ID。

    应用程序。组成部分ts

    const id = // id I need of logged-in user //;
    
    this.http.get('http://localhost:3000/api/users/' + id).subscribe(data => {
      console.log(data)
    });
    

    服务器js公司

    app.get('/api/users/:id', (req, res) => {
        User.findById(req.params.id, (err, users) => {
            res.send(users)
        })
    })
    
    app.get('/auth/google/callback',
      passport.authenticate('google', { failureRedirect: '/ask' }),
      function(req, res) {
        // Successful authentication, redirect home.
        res.redirect('/answer');
      });
    

    我想向用户显示他们的名字,并且只在他们登录时显示。。。

    <p *ngIf="user">{{ user.name }}</p>
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Pace    8 年前

    Passport填充 req 对象具有 req.user 如果身份验证成功,只需使用以下变量:

    app.get('/api/users/me', (req, res) => {
      if (req.user) {
        res.json(req.user);
      } else {
        res.sendStatus(204);
      }
    });
    
    推荐文章