验证部署在nodejs

时间:2017-11-20 12:39:01

标签: node.js express authentication jwt angular-routing

我使用express框架创建了一个服务器。我已经实施了JWT。我创建了一个角度应用程序,然后复制到公用文件夹。然后使用

app.use(express.static(__dirname + "/public"));

将此公开。现在我想验证我的角度路线。现在可以调用URL作为角度路由的URL,如localhost:7000/alocalhost: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文件。但这不是好方法,因为服务器不应该具有应用程序路由的知识。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

我认为最好的方法是在角度中实现routes并在构建SPA时将其保护在那里,但使用快速中间件可以保护您的角度应用中的API请求。