我有一个用express.js编写的应用程序,并且试图将此应用程序分为2个部分:
Express还配置为从中获取静态文件,/unauth/public/
并且我想添加第二个静态文件夹以请求来自授权路由的请求-/auth/public
转到/ app / *
我的路线配置如下所示:
var authRoutes = express.Router();
var unauthRoutes = express.Router();
authRoutes.get('/app/*', function(req, res, next) {
if(!req.isAuthenticated())
return res.redirect("/login/");
res.send("AUTHORIZED");
});
unauthRoutes.get('/', function(req, res, next) {
res.send("LANDING PAGE");
});
unauthRoutes.get('/login/', function(req, res, next) {
if(req.isAuthenticated())
return res.redirect("/app/");
res.send("LOGIN PAGE");
});
unauthRoutes.get('/registration/', function(req, res, next) {
if(req.isAuthenticated())
return res.redirect("/app/");
res.send("REGISTRATION PAGE");
});
unauthRoutes.get('/*', function(req, res, next) {
res.send("ERROR 404");
});
app.use('/', authRoutes);
app.use('/', unauthRoutes);
我试图修改req.url并express.static('auth/public')
基于此调用另一个静态oruter :
但我不知道如何处理路由app.get('/auth/*', ...)
-先前的修改将替换url,并且永远不会调用此路由。
您可以尝试这样的事情:
// Create your static middlewares
var unauthStatic = express.static('unauth/public');
var authStatic = express.static('auth/public');
// This goes in place of where you would normally load your static middleware
app.use(function(req, res, next) {
if (req.isAuthenticated()) {
authStatic(req, res, next);
} else {
unauthStatic(req, res, next);
}
});
编辑:
如果您希望通过身份验证的用户能够访问auth和unauth目录中的文件,则可以对进行两次调用app.use
,如下所示:
app.use(unauthStatic);
app.use(function(req, res, next) {
if (! req.isAuthenticated()) {
return next();
}
authStatic(req, res, next);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句