Node.js 是否可以对快速静态路由使用验证?

Node.js 是否可以对快速静态路由使用验证?,node.js,validation,express,static,Node.js,Validation,Express,Static,我在项目中使用jwt令牌验证来保护一些重要数据: 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'

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

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!');
}
是否可以使用此方法保护使用express静态中间件添加的静态路由

更新!!!
现在,在我的静态路由上设置jwt令牌验证。但我还有另一个问题——在我的angular应用程序上传(beacose现在被新的中间件阻止)并开始将令牌插入http头之前,如何将该令牌发送到node.js服务器。我是否需要一些额外的模块,或者我的新中间件可以通过某种方式从浏览器请求jwt令牌

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

var staticMiddleware = function(req, res, next) {
    console.log('Hello from staticMiddleware!');
    next();
};
app.use(staticMiddleware, express.static(__dirname + '/public'));
请注意,如果确实添加了此JWT令牌检查中间件,则只有在身份验证失败时,才应该在此代码中返回响应(例如
res.send()
)。如果JWT有效,要允许代码继续执行静态路由,请调用
next()

关于您的代码,我还有两个注释:

  • 您的
    if(!req.headers.auth)
    块将永远不会执行,您已经在
    if(req.headers.auth)
    块中
  • 在这里的所有故障情况下(
    req.headers.auth
    缺失,或
    payload.sub
    缺失),您应该返回
    401 Unauthorized
    。301和404都不正确

  • 桑克斯!我明天会试试,让你知道它是如何工作的。更新!!!现在,在我的静态路由上设置jwt令牌验证。但我还有另一个问题——在我的angular应用程序上传(beacose现在被新的middlevare阻止)并开始将令牌插入http头之前,如何将该令牌发送到node.js服务器。我是否需要一些额外的模块,或者我的新中间件可能会以某种方式从浏览器请求jwt令牌?请在单独的问题中询问您的更新。