Node.js 带有中间件的Express static需要登录
我创建了两个上传文件夹,分别是public和private。公用文件夹不需要身份验证,但专用文件夹需要中间件才能访问Node.js 带有中间件的Express static需要登录,node.js,express,Node.js,Express,我创建了两个上传文件夹,分别是public和private。公用文件夹不需要身份验证,但专用文件夹需要中间件才能访问 app.use('/uploads', express.static('uploads/public/')); app.use('/uploads', require('./admin/routers/api/accessPrivate'), express.static('uploads/private/')); 这是我的私人物品 但它显示错误:没有令牌。这意味着没有向服务器
app.use('/uploads', express.static('uploads/public/'));
app.use('/uploads', require('./admin/routers/api/accessPrivate'), express.static('uploads/private/'));
这是我的私人物品
但它显示错误:没有令牌。这意味着没有向服务器发送req报头;你能告诉我怎么做吗
多谢各位, 为所有上传请求定义通用中间件。检查用户的权限
app.use('/uploads', async (req, res, next) => {
let hasAccess = await auth(req, res, next);
if (hasAccess) {
app.use(express.static('uploads/private/'));
}
else {
app.use(express.static('uploads/public/'));
}
next();
});
// your routes
app.use('*', function (req, res, next) {
let target = 'index.html';
if (req.baseUrl && req.baseUrl != '/') {
target = req.baseUrl;
}
if(req.user) {
root = 'uploads/private/';
}
else {
root = 'uploads/public/';
}
res.sendFile(target, { root: root })
});
此外,您还应更改auth实现。谢谢您的回答,但请遵照您的建议。它不是一个中间件,即使您将express.static设置为“uploads/public/”;在app.use内部,它也不工作。它不提供静态文件@海蒂恩希·赛义德。作为您的方法,它返回无法获取文件。它看起来像get方法,不提供静态文件。你能试试我更新的答案吗?它只是为了在客户端获取文件,而不是上传文件的目标路径@HaiTienI添加缺少的目标,此代码是我的simple express服务器的一部分,请在@HaiTien中检查整个代码
app.use('/uploads', async (req, res, next) => {
let hasAccess = await auth(req, res, next);
if (hasAccess) {
app.use(express.static('uploads/private/'));
}
else {
app.use(express.static('uploads/public/'));
}
next();
});
// your routes
app.use('*', function (req, res, next) {
let target = 'index.html';
if (req.baseUrl && req.baseUrl != '/') {
target = req.baseUrl;
}
if(req.user) {
root = 'uploads/private/';
}
else {
root = 'uploads/public/';
}
res.sendFile(target, { root: root })
});