ReactJS:使用Bearer授权获取GET方法

时间:2019-11-17 09:42:32

标签: node.js reactjs rest postman bearer-token

我有带有路由的Express API。现在,我将客户端连接到服务器。

在React中,我完成了Login请求(接收Bearer令牌)。现在,我尝试发出GET Authorizeated请求,并且从服务器收到401 Unauthorized。从邮递员,一切都很好。我在Google Chrome浏览器中有CORS扩展程序。

服务器路由:

router.get('/tasks', auth, async (req, res) => {
try {
    await req.user.populate('tasks').execPopulate()
    res.send(req.user.tasks)
} catch (e) {
    res.status(500).send()
}

可以的登录请求。

handleLogInClick = (email, password) => {
    console.log("Trying to login ");
fetch("http://localhost:3000/users/login", {
  // mode: "no-cors",
  method: "POST",
  headers: {
    Accept: "application/json, text/plain, */*",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ email: email, password: password }),
})
  .then((res) => res.json())
  .then((data) =>
    this.setState({
      data,
    }),
  );
this.getTasks("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9");

};

我知道令牌,因此我尝试从服务器获取响应并将其传递给函数。我在标题中尝试了一些选项,但失败了。 方法getTasks,下面有401错误

getTasks = (token) => {
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZGNmZjFhMjQzZWUwNTJmNmNkMjAzYzgiLCJpYXQiOjE1NzM5ODEwODV9.qUY8RCpc6ABRX7qPw_ea8lKaFg9xDRw2fkiVne1L-s4";

fetch("http://localhost:3000/tasks", {
  method: "GET",
  mode: "no-cors",
  headers: {
    Accept: "application/json, text/plain, */*",
    // "Content-Type": "application/json",
    Authorization: "Bearer " + token,
  },
})
  .then((res) => res.json())
  .then(
    (tasks) =>
      this.setState({
        tasks,
      }),
    console.log(token),
  );

};

邮递员的要求,带有以下选项:

GET / tasks HTTP / 1.1 主机:localhost:3000 : 授权:承载eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZGNmZjFhMjQzZWUwNTJmNmNkMjAzYzgiLCJpYXQiOjE1NzM5ODEwODV9.qUY8RCpc6ABRX7qPw_ea8lKaFg9xDRw2fkiVne1L-S4 用户代理:PostmanRuntime / 7.19.0 接受: / 缓存控制:无缓存 邮递员令牌:b209d7ee-e254-4594-9616-93ebc86bea99,8e867f14-1d0e-40b5-8f85-76a0d317af84 主机:localhost:3000 接受编码:gzip,放气 连接:保持活动状态 缓存控制:无缓存

在此先感谢您的帮助。

0 个答案:

没有答案