是否有可能使用快速静态路由validation?

我在我的项目中使用jwt令牌validation来保护一些重要的数据:

if (req.headers.auth) { var token = req.headers.auth.split(' ')[5]; var payload = jwt.decode(token, 'blablabla...'); if (!payload.sub) { res.status(401).send({ message: 'Authentication failed' }); } if (!req.headers.auth) { return res.status(301).send({ message:'You are not authorized' }); } res.send(data); } else { res.header(404).send('Go away!'); } 

有没有可能使用这种方法来保护静态路由,使用快速静态中间件添加?

UPDATE! 好的,现在在我的静态路由上设置jwt tokenvalidation。 但我有另一个问题 – 如何发送这个令牌到node.js服务器之前,我的angular应用程序上传(现在beacose它被阻止与新的中间件),并开始插入令牌到http头。 我需要一些额外的模块,或maby我的新中间件可以请求以某种方式从浏览器的jwt令牌?

是的,您可以附加一个额外的中间件来执行您的快速静态资源,如下所示:

 var staticMiddleware = function(req, res, next) { console.log('Hello from staticMiddleware!'); next(); }; app.use(staticMiddleware, express.static(__dirname + '/public')); 

请注意,如果您添加此JWT令牌检查中间件,则只应在此代码(例如res.send() )中返回响应res.send()如果身份validation失败)。 如果JWT有效,为了让代码继续到静态路由,请调用next()

我会有两个关于你的代码的附加说明:

  1. 你的if(!req.headers.auth)块永远不会被执行,你已经在if(req.headers.auth)块中了。
  2. 在这里的所有失败情况下( req.headers.auth丢失,或者req.headers.auth丢失),您应该返回401 Unauthorized 。 301和404都是不正确的。