Я новичок в nodejs и уже давно ищу решение, и, к сожалению, никто не решает мою конкретную проблему. Или, по крайней мере, я просто не понимаю.
В моем проекте nodejs я использую общую папку, в которой хранятся все мои html и js файлы.
В server.js, который находится вне общей папки, которую я делаю:
app.use(express.static(__dirname + '/public'));
Конкретный пользователь, назовем его Том, получит доступ к tom-page.html.
Другой пользователь, назовем его Фред, получит доступ к fred-page.html.
Эти файлы и их сценарии (javascript) находятся в этой общей папке.
Теперь я пытаюсь защитить общую папку статическим паролем. Если Том входит в систему, он должен быть перенаправлен в /public/tom-page.html, а для Фреда это должно быть /public/fred-page.html. И они должны иметь доступ ко всем остальным файлам в этой папке.
Что я сделал до сих пор:
const express = require('express');
const app = express();
var basicAuth = require('basic-auth');
var is_tom = false;
var auth = function(req, res, next) {
function unauthorized(res) {
res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
return res.send(401);
};
var user = basicAuth(req);
if (!user || !user.name || !user.pass) {
return unauthorized(res);
};
if (user.name === 'fred' && user.pass === 'fred-pwd') {
is_tom = false;
return next();
} else if (user.name === 'tom' && user.pass === 'tom-pwd') {
is_tom = true;
return next();
} else {
return unauthorized(res);
}
};
const http = require('http');
server = http.createServer(app);
app.get('/', auth, function(req, res) {
if (is_tom) {
res.send('hi tom');
} else {
res.send('hi fred');
}
});
Это работает. Но я не знаю, как предоставить им доступ к общедоступной папке app.use(express.static(__dirname + '/public'));
, а также перенаправить их на их страницу.
Может ли кто-нибудь помочь, пожалуйста?