我创建了两个上传文件夹,一个是公共的,一个是私有的。公用文件夹不需要身份验证,但私有文件夹需要中间件才能访问;
app.use('/uploads', express.static('uploads/public/'));
app.use('/uploads', require('./admin/routers/api/accessPrivate'), express.static('uploads/private/'));这是我的accessPrivate
const userPermission = require("../../middleware/permission");
const auth = require('../../middleware/auth');
const accessMedia = async ( req, res, next) => {
await auth(req, res, next);
next();
};
module.exports = accessMedia;但它显示错误:"No token“。这意味着没有req头部发送到服务器,您能告诉我怎么做吗?
非常感谢你;
发布于 2020-05-01 14:19:31
为所有uploads请求定义一个通用中间件。检查用户权限。
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实现。
https://stackoverflow.com/questions/61537401
复制相似问题