#node.js #express #frontend #backend #express-router
Вопрос:
В настоящее время я пытаюсь понять, как лучше всего запустить свой интерфейс и серверную часть в одном и том же приложении NodeJS.
В настоящее время у меня есть два экспресс-маршрутизатора, один для моего интерфейса, а другой для бэкенда.
Ниже приведена выдержка из моего маршрута пользовательского интерфейса/интерфейса. При посещении /
, на которое я хочу перенаправить /dashboard
, у меня есть промежуточное программное обеспечение, которое проверяет, получили ли вы доступ к панели мониторинга, но не авторизованы, после чего вы перенаправляетесь на /login
маршрут.
const routes = (app) =gt; { const ui = Router(); ui.use(function (req, res, next) { console.log(req.originalUrl) if (req.originalUrl === '/login' || req.originalUrl === '/register') { console.log('public route hit') return next(); } if (req.isAuthenticated()) { console.log('user is authed') return next(); } console.log('re-directing to login') return res.redirect('/login'); }); ui.get('/', (req, res) =gt; { res.redirect('/dashboard'); //If root is navigated to go to dashboard }); ui.get('/dashboard', async (req, res) =gt; { res.render('static/dashboard.html', { locals: { ...globalLocals, pageName: 'Dashboard' }, partials: { ...globalPartials } }); }); app.use('/', ui); };
Выписка из моей маршрутизации API является:
const routes = (app) =gt; { const api = Router(); api.get('/logout', async (req, res, next) =gt; { await req.logout(); return handleResponse(res, 200, 'success'); }); app.use('/api/v1/', api); };
Основная проблема , с которой я сталкиваюсь, заключается в том, что, используя мой путь к интерфейсному маршрутизатору /
, он затем запускает мое промежуточное программное обеспечение для аутентификации при любых вызовах API /api/v1/***
, что приводит к любым попыткам входа в /api/v1/login
систему, приводящим к перенаправлению /login
.
Как мне обойти эту проблему? Должен ли я иметь маршрутизацию интерфейса/пользовательского интерфейса по своему собственному пути, например, /app/
предоставить мне /app/dashboard
?
Комментарии:
1. «лучший способ запустить мой интерфейс и серверную часть в одном и том же приложении NodeJS» — интерфейс не запускается на узле, он запускается в браузере клиента. Я не уверен, что понимаю вашу терминологию…. не могли бы вы уточнить свои намерения, пожалуйста?
2. Привет @ggorlen, извините, я должен был выразиться более ясно в первом посте. Я обслуживаю страницы через Express с помощью механизма шаблонов, которые обслуживаются с помощью моего
ui
маршрутизатора.