token 刷新 请求接口重新调取 页面不刷新
时间: 2023-12-13 21:05:07 浏览: 36
在前后端分离的应用中,通常使用 JSON Web Token(JWT)来进行身份验证和授权。在前端中,我们可以使用 `localStorage` 或 `sessionStorage` 存储 JWT,当 JWT 过期时,我们需要向后端发送刷新 JWT 的请求来更新 JWT。在这个过程中,页面不需要刷新,只需要在前端代码中处理 JWT 过期的逻辑,发送刷新 JWT 的请求,然后更新本地存储的 JWT 即可。
相关问题
react使用axios当刷新token后重新请求接口,页面不会刷新。怎么处理?
在React中使用Axios的过程中,如果要刷新Token并重新请求接口,可以采用以下两种方式:
1.使用拦截器:Axios提供了interceptors拦截器,可以在请求或响应被处理前对它们进行全局的拦截和处理。可以在请求拦截器中判断Token是否过期,如果过期,则先刷新Token,然后再重新发起请求。示例代码如下:
```
axios.interceptors.request.use(
(config) => {
const token = localStorage.getItem("token");
if (token) {
// 判断Token是否过期,如果过期则刷新Token
const decodedToken = jwt_decode(token);
const currentTime = Date.now() / 1000;
if (decodedToken.exp < currentTime) {
// 刷新Token的代码
}
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
```
2.使用Promise.all():Promise.all()方法接收一个Promise对象的数组作为参数,并返回一个新的Promise对象。当所有的Promise对象都成功时,新的Promise对象才会成功;当有一个Promise对象失败时,新的Promise对象就会失败。可以在Promise.all()方法中同时发起原始请求和刷新Token的请求,当Token刷新后再重新发起原始请求。示例代码如下:
```
const refreshTokenPromise = axios.post("/api/refreshToken");
const originalPromise = axios.get("/api/someApi");
Promise.all([refreshTokenPromise, originalPromise])
.then((responses) => {
const originalResponse = responses[1];
// 处理原始请求的响应数据
})
.catch((error) => {
// 处理错误
});
```
以上是两种处理方式,你可以根据实际情况选择适合自己的方式。
登录存入token 请求页面提示401 没有token 刷新 接口就穿token了
对于你的第一个问题,我可以提供一些一般性的解决方法。错误代码401表示未经授权访问,而Token通常用于身份验证。因此,您需要确保Token已成功生成且在每次请求中都被正确传递。您可以尝试使用开发者工具来检查请求标头,以确保Token是否正确传递。如果您确定Token已经被正确传递,但仍然遇到错误代码401,则可能需要检查您的身份验证方法是否正确。此外,您可能还需要检查服务器端是否正确配置了身份验证以允许Token进行身份验证。希望我的回答能够帮助您解决问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)