Неправильная переадресация угловой домашней страницы - PullRequest
0 голосов
/ 15 февраля 2019

Странно, что угловое приложение не может перенаправить с домашней страницы.

за исключением того, что я должен вручную что-то добавить после корня '/'.На картинке это когда я начинаю набирать /api/user в адресной строке.Перенаправление происходит тогда.

Это все, что XHR попадает на экспресс-сервер при посещении корневого URL?когда я захожу на домашнюю страницу?

Как я могу перенаправить корневой домен на / login?

Мой роутер такой

const authUser = (req, res, next) => {
    if (req.session.user && req.cookies['connect.sid']) {
        User.findOne({
            where: {
                id: req.session.user.id
            }
        }).then((user) => {
            if (user && user.status === 'active') {
                next();
            } else {
                res.redirect('/login');
            }
        }).catch(
            () => res.status(500).send("Something wrong!")
        );
    } else {
        res.redirect('/login');
    }
};

app.get('/login', (req, res, ) => {
    res.sendFile(__dirname + '/views/login.html');
});
app.all('*', authUser, function (req, res, next) {
    next();
});

enter image description here

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

После нескольких дней размышлений о том, что происходит, я не верю, что браузер или угловое приложение спроектированы таким странным образом, чтобы не слушать друг друга - под этим я имею в виду согласие на код статуса HTTPсделать правильное перенаправление.

Причина, по которой у меня происходило странное перенаправление в запросе XHR, а не в запросе document или html/plain text, заключается в том, что последний вообще не обращался к маршрутам authentication guards.Итак, произошло то, что angular был успешно инициализирован, и клиент уже отправлял запрос XHR.Таким образом, сервер упустил возможность отправить обратно код перенаправления 302 на ангуар с соответствующего канала, да, через XHR он это сделал, но браузер не отвечает на это.

Почему это произошло?Потому что до защиты маршрутов у меня была такая строка:

app.use(express.static(path.join(__dirname, 'dist')));

Это значит express.js обслуживать статические файлы из папки 'dist'.

Я всегда думал, что это просто конфигурация, но это больше, чем это.На самом деле он полностью открывает dist/ и позволяет файлам свободно загружаться в браузер без проблем, и, таким образом, шансы на перенаправление полностью упускаются.

Итак, после перемещения этой линии ниже маршрутов guarding все в порядке.

Теперь угловая инициализация была перенаправлена ​​в порядке, как и должно быть.Теперь мне нужно выполнять угловую сторону перенаправления только в определенном случае, когда, например, обнаружена ситуация с запретом доступа 401, сервер перезапущен.

0 голосов
/ 15 февраля 2019

Попробуйте следующим образом, это может работать

app.get('/*', function(req, res) {
    res.sendFile(path.join(__dirname, '../public/index.html'));
});

Но вы не можете перенаправить с сервера. Если вы используете .es или .jade, то вы можете перенаправить.

СейчасВы должны перенаправить с вашей угловой части

this.router.navigate(['/']);
or
this.router.navigate(['/login']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...