当前位置:   article > 正文

Vue 拦截器对token过期处理_拦截器判断token过期

拦截器判断token过期

最近在做的一个项目,需要每个http请求下 都要添加token,这样无疑是增加了工作量。而vue 拦截器interceptors正好可以解决我们的需求。

1.  在vueresource情况下 设置token拦截器。

  1. Vue.http.interceptors.push(function (request, next) {
  2. let token = localStorage.getItem("x-auth-token");
  3. if (token) {
  4. request.headers.set('token', token);
  5. }
  6. if (request.url.indexOf(url) === -1) {/*增加时间标记,兼容IE*/
  7. let getTimestamp=new Date().getTime();
  8. if(request.url.indexOf('?')>-1){
  9. request.url = url + request.url +"&timestamp="+getTimestamp;
  10. }else{
  11. request.url = url + request.url +"?timestamp="+getTimestamp;
  12. }
  13. }
  14. next(response => {
  15. if(response.body.code==-1&&response.status==200){
  16. this.$message({showClose: true, message:response.data.msg, type: 'warning'});
  17. };
  18. if (response.status >= 400) {/*在此处判断token过期,以及其他状态码设置跳转页面*/
  19. if (response.status === 401) {
  20. me.handleUnauthorized()
  21. } else if (response.status === 403) {
  22. me.handleForbidden()
  23. } else {
  24. me.handleServerError(response)
  25. }
  26. } else {
  27. if (response.data.code !== 0) {
  28. me.handleApiError(response)
  29. }
  30. }
  31. me.resetToken(response);
  32. return response
  33. });

2.如果使用的是axios情况是,设置token是下面的方法。

  1. axios.interceptors.request.use(/*这是拦截器设置tokne*/
  2. config => {
  3. let token = localStorage.getItem("x-auth-token");
  4. if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token
  5. config.headers.token = `${token}`;
  6. }
  7. if (config.url.indexOf(url) === -1) {
  8. let getTimestamp=new Date().getTime();
  9. if(config.url.indexOf('?')>-1){
  10. config.url = url + config.url +"&timestamp="+getTimestamp;
  11. }else{
  12. config.url = url +config.url +"?timestamp="+getTimestamp;
  13. }
  14. }
  15. return config;
  16. },
  17. err => {
  18. alert(err)
  19. return Promise.reject(err);
  20. });

下面这张图是设置对于token过期的处理

  1. axios.interceptors.response.use(
  2. response => {/*在这里可以设置请求成功的一些设置*/
  3. let newToken=response.config.headers.token
  4. localStorage.setItem('x-auth-token', newToken);
  5. if(response.data.code==-1&&response.status==200){
  6. this.$message({showClose: true, message:response.data.msg, type: 'warning'});
  7. };
  8. return response;
  9. },
  10. error => {/*在这里设置token过期的跳转*/
  11. if (error.response) {
  12. if(error.response.data.code==401){
  13. this.$router.push('/login');
  14. }
  15. }
  16. });

如果有哪里遗漏了请各位在下面留言都会回复

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/610933
推荐阅读
相关标签
  

闽ICP备14008679号