我使用Node(最新版本)+ Express,也是最新版本。我有2个文件夹,公共和安全。只有在登录后才能访问受保护的文件夹。
我自己创建了一个登录系统,现在我想知道如何保证到这个“安全文件夹”的路由。
我很想设置一个到我的“安全”文件夹的静态路由(就像我对公共文件夹一样),然后检查用户是否已登录,但它不起作用。
这是我认为应该起作用的......
(...)
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'secured')));
(...)
function requireLogin(req, res, next) {
if (req.session.loggedIn) {
next(); // allow the next route to run
} else {
// require the user to log in
res.redirect("/login");
}
}
app.all("/secured/*", requireLogin, function(req, res, next) {
next();
});
答案 0 :(得分:12)
在单独的路线上为您的私人静态指定不同的文件夹
app.use(express.static(path.join(__dirname, 'public')));
app.use('/private', express.static(path.join(__dirname, 'private')));
然后,您可以在每个请求中使用中间件
app.all('/private/*', function(req, res, next) {
if (req.session.loggedIn) {
next(); // allow the next route to run
} else {
// require the user to log in
res.redirect("/login");
}
})
答案 1 :(得分:2)
在你的第一个app.use之前,
添加类似
的内容app.use(function(req, res, next) {
if (req.url.match(/^\/secured\//)) {
return requireLogin(req, res, next);
}
next();
})