(HTML / Js) Аутентификация с использованием подсказок и обещаний - PullRequest
0 голосов
/ 02 марта 2020

У меня есть немного кода ниже:

async function authenticateUser() {
        let authenticated = false;
        socketTx = io();
        socketRx = io.connect();

        var user = prompt("Please enter username", "");
        var pass = prompt("Please enter your password", "");

        socketTx.emit('authChannel', {username: user, password: pass});

        let promise = new Promise((resolve, reject) => {
              socketRx.on('authChannel', function(auth) {
                //console.log(auth);
                resolve(auth); 
              });
        });

        authenticated = await promise;
        console.log(authenticated)
        if (authenticated == false) {
          user;
          pass;
        } else {authenticated == true}
      }

socketTx отправляет данные user / pass на сервер для аутентификации PAM в Node.js. socketRx получает true / false за то, был ли пользователь аутентифицирован.

Требуемое поведение заключается в том, что приглашения спамить пользователя до тех пор, пока не будет предоставлена ​​правильная информация для входа в систему. Мне показалось, что я уловил это поведение при повторном вызове переменных user / pass после проверки подлинности на ложность, но в подсказках не отображается второй (или более) раз (а). Я могу подтвердить, что получаю правильную информацию на console.log(authenticated).

Есть ли что-то очевидное, что мне не хватает?

Заранее спасибо.

1 Ответ

0 голосов
/ 02 марта 2020

Согласно комментарию:

async function authenticateUser() {
        let authenticated = false;
        socketTx = io();
        socketRx = io.connect();

        var user = prompt("Please enter username", "");
        var pass = prompt("Please enter your password", "");

        socketTx.emit('authChannel', {username: user, password: pass});

        let promise = new Promise((resolve, reject) => {
              socketRx.on('authChannel', function(auth) {
                //console.log(auth);
                resolve(auth); 
              });
        });

        authenticated = await promise;
        console.log(authenticated)
        if (authenticated == false) {
          authenticateUser(); // recall method
        } else {authenticated == true}
      }
...