Создание содержимого с помощью JavaScript (Netlify Identity): содержимое мигает при медленных соединениях, как загрузить его только после проверки входа в систему? - PullRequest
0 голосов
/ 15 сентября 2018

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

Я готовлюсь к развертыванию документации, созданной с помощью mkdocs.Он использует Netlify Identity, потому что с этим аутентификация Github доступна без какой-либо кодировки.

Мое текущее решение : я добавил сценарий Netlify Identity в заголовке и кнопку входа / выхода из системы с помощью дополнений к шаблону в mkdocs, а затем создал статический документ / login / (который выбирается)автоматически в mkdocs, но не генерируется с шаблоном).

В стандартном шаблоне есть перенаправление JS на / login /, если пользователь не вошел в систему:

if (window.netlifyIdentity) {
 window.netlifyIdentity.on("init", user => {
  if (!user) {
    document.location.href = "/login/";
  }
});
}

На статической странице есть перенаправление на / только сразу после входа пользователяв:

  if (window.netlifyIdentity) {
    window.netlifyIdentity.on("init", user => {
      if (!user) {
        window.netlifyIdentity.on("login", () => {
          document.location.href = "/";
        });
      }
    });
  }

Я надеюсь, что это разумный способ сделать это.В документах не хранится ничего критического, но я все равно не хотел бы, чтобы этот контент был открыт.

Но я заметил, что при медленном соединении перенаправление занимает секунду или две, поэтому при обращении к глубокому URL-адресу контент мигает наэкран перед входом в систему.

Что можно сделать, чтобы остановить это и загрузить контент только после проверки входа в систему?

1 Ответ

0 голосов
/ 17 сентября 2018

Это не будет работать по вашему желанию и не является безопасным.

Если бы я хотел читать ваш контент без учетной записи, я мог бы просто отключить JavaScript в своем браузере (aнесколько щелчков мыши), и ваш сайт загрузится, но перенаправление никогда не запустится.

Независимо от того, с включенным JavaScript, работает так, что браузер загружает страницу, а затем загружает любые ресурсы (включая скрипты),и, наконец, запускает любые скрипты.Нет способа изменить это.Конечно, в быстрой системе пользователь может не воспринимать задержку, так как задержка очень короткая, но всегда есть задержка.Вот как работают браузеры.

Если вы не хотите, чтобы ваши пользователи имели доступ к информации до тех пор, пока они не вошли в систему, вы не должны отправлять информацию до тех пор, пока они не войдут в систему. Другими словамиВам необходимо настроить свой сервер так, чтобы он вообще не отправлял страницу, пока не получит подтверждение того, что у пользователя есть разрешение на получение этой информации.То, как вы это сделаете, зависит от того, каким сервером вы пользуетесь, помимо прочего, что будет предметом отдельного вопроса.

...