Как запустить модальный режим, если пользователь не вошел в систему? - PullRequest
1 голос
/ 02 ноября 2019

Я пытаюсь активировать модальный режим, если пользователь не вошел в систему, и пытаюсь что-то щелкнуть для авторизованных пользователей.

на стороне сервера. Я знаю, что если я хочу проверить, прошел ли я проверку подлинности, я просто пишу: if(req.isAuthenticated()) и повторно отображаю страницу. Однако, в моем случае, я просто хочу вызвать модальное приглашение пользователя войти в систему. Поэтому мне нужно сделать это на стороне клиента. Так как мне сделать это со стороны клиента? Ниже приведен код, который я придумал, но переменная isAuthenticated, похоже, не является ответом.

HTML:

<a id="chkLog"><button class=" btn btn-success mr-2 frftr-grn" id="navbtn">Add</button></a> 

client.js (не работает):

$(function () {
  $('#chkLog').click(function () {
      if (isAuthenticated) {
        window.location.href = "/add";
      }
      else {
        $('#chkLog').modal("show");
      }

  });
});

На сервере -сторона У меня есть следующий код:

app.get("/add", (req, res) => {
  if(req.isAuthenticated()){
    res.render("add");
  }else{
    res.render("/")
  }  
});

Насколько мне известно, я не могу подсказать модальный для серверной части. Я должен был бы добавить HREF для серверной стороны получить запрос, конечно. Таким образом, я вынужден сделать вывод, что мне нужно либо найти способ загрузить модальное соединение со стороны сервера, либо попытаться проверить со стороны клиента, вошел ли пользователь в систему.

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Проверка подлинности во время самого рендеринга. то есть когда пользователь не аутентифицирован, рендер href=# и onClick=modalHandler и когда пользователь аутентифицирован, отобразите обычную ссылку и удалите обработчик onClick. В вашем примере, когда пользователь аутентифицирован, код будет выглядеть примерно так:

$(function () {
    $('#addBtn').click(function () {
        window.location.href = "/add";
    });
});

, а когда пользователь не аутентифицирован, ваш код должен выглядеть следующим образом.

$(function () {
    $('#addBtn').click(function () {
        $('#myModal').modal("show");
    });
});

Логикаиз которых код для генерации должен быть реализован в шаблоне ejs. Когда вы нажимаете на кнопку, событие click будет обрабатываться в браузере, поэтому код для отображения модального режима должен быть написан на стороне клиента, а не на стороне сервера.

0 голосов
/ 03 ноября 2019

для того, чтобы инициировать операторы if на стороне клиента, основываясь на том, аутентифицирован ли пользователь, вы хотите, чтобы операторы isAuthenticated if / else были готовы в app.get вместе с логическим значением для вашей отображаемой страницы. Со стороны клиента используйте ejs для создания клиентских скриптов.

На стороне сервера:

app.get("/", (req, res) => {
  if(req.isAuthenticated()){
        res.render("home",{logStatus:true});
    });
  }else{
        res.render("home",{logStatus:false});
    });
  }
});

EJS клиента:

  <%if(logStatus){%>
    <script>
     $('#chkLog').click(function () { 
      window.location.href = "/add"; 
     }); 
    </script>
  <%}else{%>
    <script>
    $('#chkLog').click(function () {
       $('#myModal').modal("show");
    }); 
    </script>
  <% }; %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...