在我的 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/