Express stati c с Middleware требуется логин - PullRequest
0 голосов
/ 01 мая 2020

Я создал две папки для загрузки: publi c и private. Папка Publi c не требует авторизации, но для доступа к личной папке потребуется промежуточное программное обеспечение;

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;

Но он показывает ошибку: " Нет жетона ". Это означает, что на сервер не отправлен заголовок req; Можете ли вы сказать мне, как это сделать?

Большое спасибо;

1 Ответ

1 голос
/ 01 мая 2020

Определение общего промежуточного программного обеспечения для всех 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...