Можно использовать для этого HOC. Примерная реализация:
export default function(ComposedComponent) {
class Authenticate extends React.Component {
componentWillMount() {
if (!localStorage.jwtToken) {
this.context.router.push('/auth');
}
}
componentWillUpdate(nextProps, nextState) {
if (!nextProps.isAuthenticated) {
this.context.router.push('/auth');
}
}
render() {
return (
<ComposedComponent {...this.props} />
);
}
}
Authenticate.propTypes = {
isAuthenticated: React.PropTypes.bool.isRequired,
};
Authenticate.contextTypes = {
router: React.PropTypes.object.isRequired,
};
function mapStateToProps(state) {
return {
isAuthenticated: state.auth.isAuthenticated,
};
};
return connect(mapStateToProps, { })(Authenticate);
}
В роутере:
<Route path="/main" component={requireAuth(MainPage)} />