项目为springboot+vue前后端分离式
操作者在header携带token对后台进行请求,token有效期为30分钟。现需要实现:30分钟内操作者每次操作都将重新计时。

完全使用localStorage解决该问题。

在前端请求拦截器(request)配置

// request拦截器
service.interceptors.request.use(config => {
    if(localStorage.getItem('token')!==null) {
        //刷新token时间
        axios({
          url: 'http://8.140.22.207:8086/userInfo/refreshToken',
          headers: {
            'Content-Type': 'application/json;charset=utf-8',
            'Authorization':'Firstly ' + localStorage.getItem('token')
          },
          method: 'get',
        }).then(function(res){
          localStorage.setItem('token',res.data.msg);
        });
    }
    config.headers['Authorization'] = 'Firstly ' + localStorage.getItem('token')
    return config
  },
  error => {
  //  console.log(error)
    return Promise.reject(error)
  }
)

后台编写refreshToken(),即刷新token的方法。

整体来说就是先刷新再请求。

/* 刷新token*/
    @RequestMapping("/refreshToken")
    public AjaxResult refreshToken(HttpServletResponse response) {
        String token=response.getHeader("token");
        return AjaxResult.success(jwt.refreshToken(token));
    }
Logo

前往低代码交流专区

更多推荐