node.js - NodeJS Express Routing - 在同一个 NodeJS 应用程序上同时提供前端和后端服务
问题描述
我目前正试图围绕实现在同一个 NodeJS 应用程序上运行我的前端和后端的最佳方法。
我目前有两个 Express 路由器,一个用于前端,另一个用于后端。
下面是我的 UI/前端路线的摘录。在访问/
我想重定向到 时/dashboard
,我有一个中间件,用于检查您是否访问了仪表板但未经过身份验证,然后您将被重定向到该/login
路线。
const routes = (app) => {
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) => {
res.redirect('/dashboard'); //If root is navigated to go to dashboard
});
ui.get('/dashboard', async (req, res) => {
res.render('static/dashboard.html', {
locals: {
...globalLocals,
pageName: 'Dashboard'
},
partials: {
...globalPartials
}
});
});
app.use('/', ui);
};
我的 API 路由的摘录是:
const routes = (app) => {
const api = Router();
api.get('/logout', async (req, res, next) => {
await req.logout();
return handleResponse(res, 200, 'success');
});
app.use('/api/v1/', api);
};
我遇到的主要问题是,通过让我的前端路由器路径使用/
它,然后在对 的任何 API 调用上运行我的身份验证中间件/api/v1/***
,这会导致任何登录尝试/api/v1/login
导致重定向到/login
.
我该如何解决这个问题?我应该让我的前端/UI 路由在它自己的路径上,比如/app/
给我/app/dashboard
吗?
解决方案
推荐阅读
- python - 如何在Robot框架中将元素的html表转换为Arraylist元素
- ssl - 在 socks5 套接字上的 Python3 ssl wrap_socket
- javascript - XMLHttpRequest,readyState 问题
- python-3.x - 根据变量的当前出现对行进行分组
- android - android的json对象的while循环或for循环不起作用
- c# - Visual Studio 和 R.Net 的 C# 不使用 ggplot2 显示任何图形
- azure-logic-apps - Liquid - 如何在本地设置 Liquid 模板
- vhdl - 比较两个有符号信号
- c# - 网站->服务器 PHP 套接字被拒绝,但 .NET 客户端连接
- java - 如何通过java获取txt的列内容