如何从reactjs应用程序中的axios拦截器重定向?

时间:2016-11-24 08:21:53

标签: reactjs react-router-redux axios

我正在尝试检查每个axios请求是否存在非公共路径标头内的令牌。我想让用户登录页面以防万一找不到令牌。 但这是在reactjs app里面。实现这一目标的方法是什么?

axios.interceptors.request.use(function (config) {
 //If the header does not contain the token and the url not public, redirect to login  
 var accessToken = null;
 if(sessionStorage.getItem('currentUserString')){
  accessToken =  'bearer '+JSON.parse(sessionStorage.getItem('currentUserString')).tokenDetails.accessToken;
 }

 var configURL = config.url;
 //if token is found add it to the header
 if (accessToken) {
   if (config.method !== 'OPTIONS') {
          config.headers.authorization = accessToken;
   }
 }
 //otherwise if the request is not for login page/auth service/home redirect to login page
 else if(!isNotOpenPath(config.url)){

   //we may want to store current path in the cookies. This can be retrieved after login is successful
   //WHAT TO DO HERE TO TAKE USER TO LOGIN PAGE IN THE REACT JS APP????
  }    
}

如何发信号反应app,特别是我们这里没有派遣。 我可以使用吗? document.location.href='\login'

1 个答案:

答案 0 :(得分:1)

我认为在你的应用程序中使用路由的方法是使用React Router ... 然后导航你可以尝试这个......

https://github.com/ReactTraining/react-router/blob/master/docs/guides/NavigatingOutsideOfComponents.md