Javascript 如何在react redux中处理过期的jwt令牌?
我正在用react js和redux开发应用程序。对于后端,我使用java创建api。到目前为止,我已经创建了三个服务:登录、注册和登录。我已经使用jwt令牌来登录服务,以确保信息的安全。我已在后端设置jwt令牌过期时间为10分钟。每10分钟jwt令牌就会过期,对于新令牌,我需要再次登录。这就是我在后端所做的 我已经在react with redux概念中集成了这些服务。我遇到的问题是,每次我都需要在登录屏幕上寻找新的令牌。我希望这一切发生在幕后。如何使用reduxJavascript 如何在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
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请求时,您就可以轻松触发刷新令牌操作。如果您希望用户在另一个页面上手动请求令牌,则可能会出现重复的情况,这可能需要他们出于安全原因提供一些信息,而不是自动刷新令牌,这可能是一个安全漏洞。