location.replace () не заменяет страницу - PullRequest
0 голосов
/ 16 января 2020

Я впервые экспериментирую с переходом между html страницами. Я искал различия между заменой и ссылкой, когда я основал их, я выбрал второй. Я создаю кнопку выхода. Поэтому, когда я нажимаю на него, я должен быть перенаправлен на страницу входа. Но я также должен сделать невозможным для пользователя перейти обратно домой (из входа в систему) с помощью кнопки назад. Итак, в своем домашнем файле. js я написал (я работаю с firebase):

const disconnettitiButton = document.getElementById("disconnettiti");
disconnettitiButton.addEventListener('click', () => {
      firebase.auth().signOut().then(function() {
        // Sign-out successful.
        window.location.replace("../index.html");
      }).catch(function(error) {
        // An error happened.
      });
    });

, в то время как это html соответствует кнопке (Это не совсем кнопка ... )

 <a class="nav-link" href="#" id="disconnettiti">Disconnettiti<span class="sr-only"></span></a>

Проблема в следующем: window.location.replace () успешно меняет страницу и возвращается обратно в форму входа. Но когда я нажимаю кнопку «Назад», я также могу вернуться на домашнюю страницу, где я вызвал функцию .replace (). Метод replace должен удалить вершину истории, но это не так. Любые решения? Большое спасибо

Ответы [ 2 ]

1 голос
/ 16 января 2020

В вашей логике c есть ошибка c. Страницы зоны ограниченного доступа должны быть доступны только при наличии действительных прав доступа.

Эти права доступа должны быть удалены при выходе пользователя из системы. Таким образом, даже если вы нажмете кнопку «Назад», у вас больше нет грантов, и вы будете перенаправлены на страницу входа. То же самое произойдет, если вы попытаетесь указать конкретный c URL-адрес в запрещенной области.

Вы можете использовать повар ie, например, который вы установили / сбросили при входе / выходе или вы можете использовать сессий. На каждой странице в зоне ограниченного доступа вы должны иметь проверку на наличие повара ie в начале и, в противном случае, перенаправление.

Что-то работает не так в вашем приложении, если после выхода из системы вы все еще можете видеть вещи, которые находятся внутри запрещенной области (но вы не предоставили код для проверки)

РЕДАКТИРОВАТЬ: я видел @ комментарий scragar после того, как я отправил свой ответ, но я полностью согласен с этим, а не с ответом OP. Нет необходимости в странице входа, если вы не хотите ограничивать приложение. Логин становится совершенно бессмысленным, если вы все равно можете получить доступ к закрытым областям

0 голосов
/ 16 января 2020

Я думаю, вам нужно дать полный URL, а не относительный путь. Таким образом, если вы обслуживаете страницу с localhost на порту 3000, а index.html на root, то вы должны указать путь как http://localhost/index.html.

Кроме того, ваш скрипт должен выдавать ошибку , Сначала нужно проверить консоль браузера, если что-то не работает.

Надеюсь, это поможет:)

...