rest_framework_jwt 如何使用refresh token进行token续期
时间: 2023-08-14 14:05:10 浏览: 128
基于acess_token和refresh_token实现token续签
使用 `rest_framework_jwt` 进行 token 续期需要执行以下步骤:
1. 在 `settings.py` 中添加 `JWT_ALLOW_REFRESH` 配置项:
```python
JWT_AUTH = {
# ... 其他配置项 ...
'JWT_ALLOW_REFRESH': True,
'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
}
```
其中,`JWT_ALLOW_REFRESH` 配置项表示是否允许使用 refresh token 进行 token 续期,`JWT_REFRESH_EXPIRATION_DELTA` 配置项表示 refresh token 的有效期,这里设置为 7 天。
2. 在 `urls.py` 中添加 `refresh_jwt_token` 视图的路由:
```python
from rest_framework_jwt.views import refresh_jwt_token
urlpatterns = [
# ... 其他路由 ...
path('api/token/refresh/', refresh_jwt_token),
]
```
3. 在前端代码中,当 token 过期后,使用 refresh token 进行 token 续期。示例代码如下:
```javascript
const refreshToken = localStorage.getItem('refreshToken');
if (refreshToken) {
fetch('/api/token/refresh/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ refresh: refreshToken }),
})
.then((response) => response.json())
.then((data) => {
localStorage.setItem('accessToken', data.access);
localStorage.setItem('refreshToken', data.refresh);
})
.catch((error) => {
console.error('Failed to refresh token', error);
});
} else {
console.error('No refresh token found');
}
```
在上面的代码中,我们首先从本地存储中获取 refresh token,然后使用 `fetch` 发送 POST 请求到 `/api/token/refresh/` 视图,将 refresh token 作为请求体的 `refresh` 参数。在成功获取到新的 access token 和 refresh token 后,我们将它们保存到本地存储中。
希望这可以帮助你理解如何使用 `rest_framework_jwt` 进行 token 续期。
阅读全文