Я пытаюсь настроить аутентификацию для приложения Node с помощью Express для клиентов, которые не работают на localhost.
В основном у меня есть RPi, на котором работает Node, и я использую Chromium для графического интерфейса пользователя.устройство.Проблема в том, что вы можете просто ввести IP-адрес для устройства из любого браузера в сети, и он будет обслуживать тот же контент.В некоторых случаях это желательно, но я хочу защитить его паролем.
Это мои настройки с использованием express-basic-auth
:
const express = require('express'),
basicAuth = require('express-basic-auth');
const app = module.exports = express();
const server = require('http').createServer(app);
// Hook Socket.io into Express
const io = require('socket.io').listen(server);
// Configuration
app.use( basicAuth(
{
users: { admin: 'secret' },
challenge: true
}))
app.use( express.static('./my_path/') );
// Socket.io Communication
io.sockets.on('connection', require('./modules/socket'));
// Start server
server.listen(3000, () => console.log("Express server listening on port %d in %s mode", server.address().port, app.settings.env));
Это работает, однако я не хочу аутентификациюдля localhost.
Я могу получить хост от запроса, подобного следующему:
app.use( ( req ) =>
{
debug( req.headers.host );
})
Я не знаю достаточно о Node и Express, чтобы собрать все это вместе.
Может быть, есть что-то с express-basic-auth
, которое мне не хватает, или другое промежуточное ПО авторизации, которое я могу использовать.