如何将Bearer令牌发送给客户端,然后从客户端调用令牌

时间:2019-05-01 07:41:25

标签: node.js jwt

我已经完成了一个教程,试图让我了解JWT令牌。我似乎已经对创建令牌以及使用令牌允许或禁止访问路由有所了解。

使用邮递员,这一切都很好用,但是在邮递员中,我在授权下输入令牌。我的问题是: 1.如何将令牌发送到客户端,以便将其保存在客户端。 2.客户端尝试访问路由时,客户端如何返回令牌? 我需要了解不使用邮递员时如何发生。我相信它很简单。

我只发送

`res.header('Authorization', 'Bearer', + token);`

`res.header('Authorization', 'Bearer' + token);`

但是我可以将其与其他内容(例如消息/数据等)一起发送吗?

然后,当用户以后尝试访问受保护的路由时,如何访问此标头。 IOW如何在客户端存储?

这是我到目前为止所拥有的:

`//login route`
   `app.post('/login', async function(req, res, next) {
  const { name, password } = req.body;
  if (name && password) {
    let user = await getUser({ name: name });
    if (!user) {
      res.status(401).json({ message: 'No such user found' });
    }
    if (user.password === password) {
      // from now on we'll identify the user by the id and the id is the 
      // only personalized value that goes into our token
      let payload = { id: user.id };
      let token = jwt.sign(payload, jwtOptions.secretOrKey);
      res.json({ msg: 'ok', token: token });
    } else {
      res.status(401).json({ msg: 'Password is incorrect' });
    }
  } 
});`

`// protected route
app.get('/protected', passport.authenticate('jwt', { session: false      }), function(req, res) {
  console.log('REQUEST HEADERS ON   PROTECTED::',req.headers.authorization)
  res.json('Success! You can now see this without a token.');
});`

受保护的路由下的console.log给我:     “已保护的请求标头:: Beary eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNTU2NjI3NTczfQ.gAU2VzpUpXHpcgM6_n8gf7D-xLCS59”是I”,因为I“是I”。

1 个答案:

答案 0 :(得分:2)

我最近使用 react 作为前端,并 hapi.js 作为后端,使用了jwt auth。要将令牌保存在客户端,您可以使用 localstorage ,如下所示: 您必须将其保存在用户登录组件上。

localStorage.setItem('token', res.data.token);

然后,要在受保护的路由器上访问此令牌,请使用以下命令:

let token = localStorage.getItem('token');
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;

我希望这可以帮助您在客户端解决问题。