Как получить доступ к переменным среды из файла конфигурации apache2?

#javascript #html #apache

#javascript #HTML #apache

Вопрос:

Я пытаюсь создать часть своего веб-сайта, где он будет запрашивать у пользователя пароль в окне запроса, а затем разрешать доступ к скрытому содержимому, когда пароль правильный. Я хочу спрятать свой пароль где-нибудь на моем сервере apache2; где-нибудь, чтобы я не мог просто перейти к файлу javascript, содержащему пароль в строке URL, например [mywebsite]/password.js. Я пытался делать

 SetEnv PASSWORD password123 
  

например, в файле конфигурации моего веб-сайта, затем в моем файле javascript, связанном с моим HTML-файлом, я написал следующий код:

 function check() {
    var password = process.env.PASSWORD;
    var str = prompt("Enter the correct password to continue: ");
    if (str != password) {
        check();
    }
    document.getElementById("visible").style.visibility = "visible";
}
  

Однако, когда я загружаю веб-сайт, он загружается, но содержимое по-прежнему скрыто. Как я могу скрыть пароль на моем сервере, чтобы я мог напрямую обращаться к нему в моем файле javascript? Может быть, есть лучший способ сделать это? Я должен отметить, что все работало правильно, прежде чем пытаться скрыть пароль.

Комментарии:

1. Вы должны подтвердить пароль на сервере с помощью ajax 🙂

2. Вы спрашиваете, как использовать X для достижения Y, но X не является подходящим инструментом для этого. Что вам нужно, так это надлежащий сервер. Я рекомендую начать с PHP ( xampp ) (чтобы устранить путаницу [или добавить к ней], process существует только в серверном JavaScript, а не в среде браузера)

3. Как сказал @RohitSharma, вы должны подтвердить пароль на сервере с помощью AJAX. Смотрите, JS запущен в браузере, который отличается от среды сервера!

Ответ №1:

Во-первых, process.env недоступен из контекста браузера. process.env — это переменная nodejs. Он будет существовать только в среде, подобной nodejs. javascript в браузере не запускает nodejs.

Самое простое решение — запретить доступ к странице напрямую с помощью apache:

Вам нужно будет сгенерировать файл .htpasswd.

В вашей конфигурации apache вы бы добавили что-то вроде этого:

 <Directory "/path/to/password/protected/folder">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /path/to/htpasswd
    Require valid-user
</Directory>
  

Вот полное руководство по настройке папки, защищенной паролем, в apache:

https://web.archive.org/web/20200717044602/https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-14-04

Комментарии:

1. Это как раз то, что мне было нужно. Спасибо!