token设置有效期
时间: 2025-02-07 07:09:02 浏览: 59
### 如何在JWT及其他认证机制中设置Token的有效期
#### JWT中的有效期设定
在JWT(JSON Web Token)的设计理念里,为了保障安全性并控制访问权限的时间范围,通常会在创建token的时候指定其有效期限。对于采用双令牌模式的情况而言,`access_token` 和 `refresh_token` 都会被赋予不同的生命周期。
- **Access-Token**: 这种类型的token主要用于短期验证用户的请求合法性。由于其中可能包含了敏感信息以及考虑到安全因素的影响,因此它的生存周期相对较短,比如30分钟[^1]。
- **Refresh-Token**: 相较于前者,此token的作用在于当`access_token`到期之后能够重新获取新的`access_token`而无需再次登录。出于长期保持会话的目的,这类token可以拥有更长的存在时间,例如7天。
下面是通过Java代码来展示如何利用jwt工具类为特定角色的用户生成带有过期间隔的token实例:
```java
// 创建具有特定有效期的JWT
String token = jwtUtil.createJWT(
admin.getId(), // 用户唯一标识符
admin.getLoginname(), // 登录名或者其他身份属性
"admin", // 角色或其他声明数据
expirationTimeInMinutes // 设置token的有效期(单位:分钟)
);
```
在此基础上,还可以进一步调整参数以适应具体应用场景下的需求变化,如改变`expirationTimeInMinutes`变量的具体数值即可轻松修改所发出token的实际存活时长。
#### Axios实现刷新Token功能
针对前端部分,在实际项目开发过程中经常借助axios库来进行HTTP请求拦截器配置,从而实现在每次发送API调用前自动检测当前持有的`access_token`是否即将失效,并据此决定是否需要提前发起一次专门用来换取新`access_token`的操作。这种做法不仅简化了业务逻辑处理流程,同时也提高了用户体验度,实现了所谓的“无感知续签”。
```javascript
import axios from 'axios';
const instance = axios.create({
baseURL: process.env.VUE_APP_API_URL,
});
instance.interceptors.request.use((config) => {
const currentTime = Date.now() / 1000;
const accessTokenExpireAt = localStorage.getItem('accessTokenExpires');
if (currentTime >= parseInt(accessTokenExpireAt)) {
return refreshAccessToken().then(() => config);
}
config.headers.Authorization = `Bearer ${localStorage.getItem('accessToken')}`;
return Promise.resolve(config);
});
```
上述JavaScript片段展示了怎样基于axios构建一个具备智能判断能力的HTTP客户端,能够在必要时刻触发后台接口完成`access_token`更新过程的同时不影响正常的网络交互操作[^2]。
阅读全文
相关推荐


















