Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react redux中处理过期的jwt令牌?_Javascript_Html_Reactjs_Redux - Fatal编程技术网

Javascript 如何在react redux中处理过期的jwt令牌?

Javascript 如何在react redux中处理过期的jwt令牌?,javascript,html,reactjs,redux,Javascript,Html,Reactjs,Redux,我正在用react js和redux开发应用程序。对于后端,我使用java创建api。到目前为止,我已经创建了三个服务:登录、注册和登录。我已经使用jwt令牌来登录服务,以确保信息的安全。我已在后端设置jwt令牌过期时间为10分钟。每10分钟jwt令牌就会过期,对于新令牌,我需要再次登录。这就是我在后端所做的 我已经在react with redux概念中集成了这些服务。我遇到的问题是,每次我都需要在登录屏幕上寻找新的令牌。我希望这一切发生在幕后。如何使用redux export functio

我正在用react js和redux开发应用程序。对于后端,我使用java创建api。到目前为止,我已经创建了三个服务:登录、注册和登录。我已经使用jwt令牌来登录服务,以确保信息的安全。我已在后端设置jwt令牌过期时间为10分钟。每10分钟jwt令牌就会过期,对于新令牌,我需要再次登录。这就是我在后端所做的

我已经在react with redux概念中集成了这些服务。我遇到的问题是,每次我都需要在登录屏幕上寻找新的令牌。我希望这一切发生在幕后。如何使用redux

export function handleResponse(response) {
  if (response.ok) {
    return response.json();
  }
  // If invalid jwt token the page will get redirect to login.
  if (response.status === 401) {
    localStorage.clear();
    alert('Session expired!');
    location.href = '/login';
  }
}

export function loginAction(data) {
  const resObject = {
    username: data.username,
    password: data.password,
  };
  return dispatch =>
    fetch(`/login`, {
      method: 'post',
      body: JSON.stringify(resObject),
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Basic ${basicAuth.authSecret}`,
      },
    })
      .then(handleResponse)
      .then(res => dispatch(loginUser(res)));
}

您的API应该实现用于刷新令牌的API端点。我遇到了一个类似的问题,但我使用的是django rest framework jwt,它已经为本例提供了一个api端点。然后,您需要一个action、saga和reducer,它将当前jwt发送到端点,并在旧jwt有效的情况下返回一个新jwt。然后,每当用户成功向API发送post/delete/put请求时,您就可以轻松触发刷新令牌操作。如果您希望用户在另一个页面上手动请求令牌,则可能会出现重复的情况,这可能需要他们出于安全原因提供一些信息,而不是自动刷新令牌,这可能是一个安全漏洞。