node js jwt如何将令牌传递给其他路由以稍后检查登录的用户信息

Posted

技术标签:

【中文标题】node js jwt如何将令牌传递给其他路由以稍后检查登录的用户信息【英文标题】:node js jwt how to pass token to other routes to check logged user information later 【发布时间】:2018-01-28 12:39:58 【问题描述】:

我正在为自己创建一个应用程序学习。因此,目前我需要使用 jsonwebtoken 对用户进行身份验证,并且我知道如何创建令牌来对用户进行身份验证。所以实际上我需要知道以后如何使用用户登录系统时创建的令牌来检索登录用户的信息。我到处寻找一个好的答案,但我找不到一个好的答案

apiRoutes.post('/authenticate', function(req, res) 

// find the user
  User.findOne(
    name: req.body.name
  , function(err, user) 

    if (err) throw err;

    if (!user) 
      res.json( success: false, message: 'Authentication failed. User not found.' );
     else if (user) 

      // check if password matches
      if (user.password != req.body.password) 
        res.json( success: false, message: 'Authentication failed. Wrong password.' );
       else 

        // if user is found and password is right
        // create a token
        var token = jwt.sign(user, app.get('superSecret'));

        // return the information including token as JSON
        res.json(
          success: true,
          message: 'Enjoy your token!',
          token: token
        );
      
    
  );
);

这是用户登录和令牌创建过程

如果用户登录系统并创建了令牌,我需要在下面的路由器中检索所有用户信息

apiRoutes.get('/users', function(req, res) 
  if(!loggedinUser)
    //throw err

else 
  User.find(, function(err, users) 
    res.json(users);
   );
  );

所以请帮助我理解这一点,我希望你们为这个问题提供一个好的答案

谢谢

【问题讨论】:

【参考方案1】:

生成授权令牌后,您需要通过客户端在所有请求中发送该令牌。 在服务器端,您需要实现一个身份验证中间件,您将检查身份验证令牌。并进一步处理该请求 检查这个链接 How to use the middleware to check the authorization before entering each route in express?

【讨论】:

【参考方案2】:

将用户登录令牌添加到req.session.token,然后在jwt中间件中检查。

【讨论】:

以上是关于node js jwt如何将令牌传递给其他路由以稍后检查登录的用户信息的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JWT 令牌发送到 node.js 服务器

如何使用 Aws AppSync 将 JWT 令牌(或任何其他变量)从父解析器传递给子解析器

如何延长node.js中相同jwt令牌的到期时间

如何通过 vue 路由器和服务器提供的 JWT 令牌管理用户身份验证?

jwt令牌过期后如何注销

在 Laravel 中验证 Node 生成的 JWT