В моей навигационной панели есть ссылка Категории , которая ведет к модели Категория .Только администратор может управлять этим разделом (модель).Я скрываю эту ссылку в виде.
Но когда я получаю прямой доступ к ссылке, например localhost: 3000 / category , страница начинает отображаться, а затем (примерно через 1 секунду)пользователь перенаправлен на домашнюю страницу.Однако - страница начнет отображаться, поэтому пользователь может некоторое время видеть содержимое, которое должно быть защищено.
Вот мой маршрут (NodeJS):
router.get('/', passport.authenticate('jwt', { session: false }), function(req, res, next) {
if (req.isAuthenticated()) {
console.log('logged in');
} else {
console.log('not logged in');
}
Category.find({}).sort('name').exec(function(err, categories) {
if(err) throw err;
res.send(JSON.stringify(categories));
});
});
module.exports = router;
А вот компонент ReactJS:
class Category extends Component {
constructor() {
super();
this.state = {
name: '',
errors: {},
categories: []
}
this.handleInputChange = this.handleInputChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
componentDidMount() {
let self = this;
axios.get('/categories')
.then(function(response) {
self.setState({categories: response.data});
}).catch(err => {
if (err.response.status === 401) {
this.props.history.push('/');
}
return err;
})
}
...
Когда неавторизованный пользователь пытается посетить localhost: 3000 / category , NodeJS возвращает 401 и ReactJS перенаправляет этого пользователя на домашнюю страницу.Тем не менее - еще 1 секунда, когда пользователь увидит загрузку страницы защищенной категории.
Я думаю, что мой подход к решению этой ситуации не самый лучший (я новичок в MERN).Весь маршрут категория должен быть доступен только для администраторов.
Как мне решить эту проблему?
Спасибо