我使用express框架创建了一个服务器。我已经实施了JWT。我创建了一个角度应用程序,然后复制到公用文件夹。然后使用
app.use(express.static(__dirname + "/public"));
将此公开。现在我想验证我的角度路线。现在可以调用URL作为角度路由的URL,如localhost:7000/a
,localhost:7000/b
等。此外,还会调用CSS,图像或其他文件等实际文件。
所以我使用中间件来拦截所有服务器调用。
app.use((req, res, next) => {
let pwt = req.cookies ? req.cookies.pwt : null;
jwt.verify(pwt, process.env.SECRET_KEY, (err, decoded) => {
if (decoded) {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
} else {
let callbackUrl = encodeURIComponent("http://" + req.headers.host + req.originalUrl);
res.redirect(process.env.AUTH_SERVER + "/auth?_r=" + callbackUrl);
}
});
});
我正在检查jwt令牌并返回每个请求的index.html文件。当有图像或任何其他CSS文件的调用时,它返回index.html文件。
一种方法是创建一个Angular路由URL数组,并仅在req.originalUrl
来自该列表时提供index.html文件。但这不是好方法,因为服务器不应该具有应用程序路由的知识。有没有办法解决这个问题?