У меня есть огромное веб-приложение Django, в котором один из модулей («приборная панель») написан с помощью node и react. Вход в систему осуществляется модулем Django.
Пользователь должен войти в основное приложение, чтобы получить доступ к панели управления реагированием, и это работает частично - код получает сеанс пользователя из браузера и отображает данные только в том случае, если он есть.
Теперь я хотел бы перенаправить пользователя на главную страницу входа в приложение, если сеанса нет, но я не знаю, как это сделать с моей текущей структурой (и этим чертовым маршрутизатором v4).
Я использую базовое имя в компоненте BrowserRouter, чтобы использовать маршруты относительно пути панели инструментов в приложении django.
Вот что я придумал для JSX для app.jsx:
<BrowserRouter basename='/en/dashboard'>
{this.state.isAuthenticated ? (
<Paper zDepth={0} style={{ height: '100%', backgroundColor: grey900 }}>
<div style={{height: '100%'}}>
<Header />
<Switch>
<Route exact={true} path='/' component={FirstSection}/>
<Route path='/first' component={FirstSection}/>
<Route path='/second' component={SecondSection}/>
</Switch>
</div>
</Paper>
) : (
<Redirect to="/en/login"/>
)}
</BrowserRouter>
Однако на самом деле он перенаправляет на en/dashboard/en/login
. Я считаю, что могу удалить свойство basename из BrowserRouter и добавить его к каждому последующему маршруту, но если этот модуль в конечном итоге станет больше, это затруднит маршрутизацию. Есть лучший способ сделать это?