是否有可能使用快速静态路由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()
。
我会有两个关于你的代码的附加说明:
- 你的
if(!req.headers.auth)
块永远不会被执行,你已经在if(req.headers.auth)
块中了。 - 在这里的所有失败情况下(
req.headers.auth
丢失,或者req.headers.auth
丢失),您应该返回401 Unauthorized
。 301和404都是不正确的。