在我的 express 应用程序中,我使用以下行设置了要从 /public 目录提供的静态文件:

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

现在,我需要在提供静态内容之前添加一个用于身份验证的中间件,如果用户未经过身份验证以重定向到身份验证路由(例如 /login )。
我真的不知道我该怎么做。有任何想法吗?

最佳答案

由于您没有指定它,我将假设您已经拥有某种身份验证系统。

在 Express 中,代码中中间件的顺序很重要:如果您希望在中间件 2 之前执行中间件 1,则应将它们相应地放置在代码中。由于 express.static 是一个中间件,如果您想在提供静态文件之前进行身份验证,您可以在调用 express.static 之前简单地编写您的身份验证中间件

app.use(function (req, res, next) {
    if (!userAuthenticated(req)) {
        return res.redirect('/login');
    }
    next();
});

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

我假设您有一个 userAuthenticated 函数,例如检查 HTTP 请求是否包含有效的访问 token 。

Read more about middlewares.

关于node.js - Express.js 4 - 在静态文件之前使用中间件进行身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36445905/

10-16 10:44