Я определил маршрутизаторы в своем приложении-ответе. У меня есть 3 страницы в моем приложении. После того, как пользователь успешно войдет в систему, он перейдет на следующие экраны. Поток работает нормально. Но есть проблема. Когда я напрямую ввожу URL-адрес для других страниц в своем приложении, он загружает эту страницу независимо от того, зарегистрирован ли пользователь или нет. Я хочу добавить чек об этом. Если пользователь не зарегистрирован, он должен быть перенаправлен на страницу входа в систему.Добавить авторизацию для взаимодействия маршрутизаторов
Это мои маршруты
<Route path="/" component={LoginPage}/>
<Route path='app' component={App}>
<IndexRoute component={Home}/>
<Route path='/video-screen' component={VideoScreen}>
<IndexRoute component={TagList}/>
<Route path='/add' component={AddTags}/>
<Route path='/TagList' component={TagList}/>
<Redirect from='*' to='/'/>
</Route>
</Route>
</Router>
И это метод моего логина компонента, который проверяет учетные данные и принять пользователя на следующую страницу, если Войти успешна
handleLoginButtonClick() {
var that = this;
let token;
var settings = {
"async": true,
"crossDomain": true,
"url": "https://www.backend.example.raccte.com/auth/login/",
"method": "POST",
"credentials": 'include',
"headers": {
"content-type": "application/x-www-form-urlencoded",
},
"data": {
"password": document.getElementById("password").value,
"username": document.getElementById("username").value
},
success:(response, textStatus, jQxhr)=> {
this.props.tokenAction(response.auth_token);
}
}
$.ajax(settings).done((response) => {
token = response.auth_token
console.log(token);
this.context.router.push('/app')
});
Обновления
function authorize(){
if(window.localStorage.token == null){
browserHistory.push('/')
}
}
function getRoutes(store) {
return (
<Router>
<Route path="/" component={LoginPage}/>
<Route path='app' component={App} onEnter={this.authorize}>
<IndexRoute component={Home}/>
<Route path='/video-screen' component={VideoScreen}>
<IndexRoute component={TagList}/>
<Route path='/add' component={AddTags}/>
<Route path='/TagList' component={TagList}/>
<Redirect from='*' to='/'/>
</Route>
</Route>
</Router>
)
}
export default getRoutes;
дает мне сообщение об ошибке Uncaught ReferenceError: authorize не определен
я обычно просто держать его как функцию в компоненте, где все маршрутизатор материал визуализируется – Jayce444
Как я должен проверить, зарегистрирован пользователь или не? – ApurvG
У вас может быть логическое состояние, записанное в состоянии, которое отслеживает, вошли ли они в систему или нет. Вы можете сохранить его в хранилище браузера, чтобы он все еще присутствовал при обновлении (например, когда сайт помнит, что вы вошли в систему). Если вы используете простой реактив, вам придется передать это «разрешенное» логическое свойство как свойство для множества элементов и вниз по маршрутам, что может быть раздражающим. Это хороший пример того, когда следует использовать инструменты управления государственными органами, такие как redux или комбинезон. Делает такие вещи намного проще – Jayce444