How do I check for token expiration and logout user? How do I check for token expiration and logout user? reactjs reactjs

How do I check for token expiration and logout user?


In my view middleware will be the best option.

You can do something like this

const checkTokenExpirationMiddleware = store => next => action => {  const token =    JSON.parse(localStorage.getItem("user")) &&    JSON.parse(localStorage.getItem("user"))["token"];  if (jwtDecode(token).exp < Date.now() / 1000) {    next(action);    localStorage.clear();  }  next(action);};

You have to then wrap it in applyMiddleware


You need to wrap the Main component with a HOC. The HOC will validate the token and if OK allow the component to display. If the token is invalid, the login page is redirected to.

const authChecker = (Component) => {  return class extends React.Component {    state = {      show: false;    }    componentWillReceiveProps(nextProps) {      if (nextProps.children !== this.props.children) {        this.checkAuth();      }    }    componentDidMount() {      this.checkAuth();    }    checkAuth() {      Api.checkAuth()      .then(result => {        if (result.success) {          this.setState({ show: true });        } else {          // logout since token expired          API.logout();        }      });    }    render() {      return this.state.show && <Component {...this.props} />    }  }}export default authChecker(Main);


this.serverResponse.expires_inis the expiration time in seconds.

var tokenexpiration: Date = new Date();tokenexpiration.setSeconds(new Date().getSeconds() + parseInt(this.serverResponse.expires_in))console.log(tokenexpiration);

than you can save it to localStorage:

localStorage.setItem('expirationdate',tokenexpiration)

and with simple condition you can check whenever you need if the token was expired.