ynjay Ответов: 1

Как использовать sessionstorage, чтобы предотвратить обновление для входа в систему?


Я использую vue-cli и пытаюсь понять, как я могу предотвратить вход приложения в систему, когда пользователь нажимает кнопку Обновить, я просто хочу, чтобы страница была такой же, как и до того, как было выполнено обновление.

Любая помощь была бы очень кстати, спасибо!

Что я уже пробовал:

Я попробовал использовать Windows.sessionStorage
В моем логине:
if(this.input.username == res.data.name && this.input.password == res.data.password) {
              sessionStorage.setItem("authenticated", true)

Затем я использовал навигационную защиту:
routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld,
      props: true,
       beforeEnter: (to, from, next) => {
       //  got to Login if not authenticated
      if (sessionStorage.getItem === null) next({ name: 'Login' })
       else next() // else go to the route
       }
    },

но когда я нажал кнопку Обновить, меня все равно вернули к логину, хотя там был виден sessionStorage.

1 Ответов

Рейтинг:
0

W∴ Balboos, GHB

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

Если бы вы могли добавить в php, то вы могли бы хранить пару uid/key в переменной $_SESSION. Проверьте UID/ключ для каждой открытой страницы, которую вы хотите защитить, а также измените/обновите ключ после каждого теста. Затем вы можете даже добавить метку времени и истечь срок действия логина через некоторое соответствующее количество времени. Ключ - это просто случайная строка. Uid может быть хэширован и сохранен вместо их идентификатора.

SELECT COUNT(*) from WhoIsLoggedInTable where uid='blahblah' and key='random something' and time-difference-functin(minutes, time-stamp-field, database-datetime-function) > expired-minutes
посчитайте > 0, и они все еще вошли в систему (соответственно обновите таблицу).

Обратите внимание, что, не полагаясь ни на какие оконные функции, он работает в любом браузере и любом O/S. Их там целая куча и они активно используются в наши дни


ynjay

Большое спасибо! Я использую базу данных, в которой сохранены имя пользователя и пароль.

Я не очень хорошо знаком с использованием php, но знаете ли вы, Существуют ли подобные реализации php для vue?

Как настроено приложение, только страница входа в систему может быть просмотрена не вошедшими в систему пользователями. Все остальное защищено, но я хочу, чтобы вошедший в систему пользователь оставался на странице, на которой он находится, даже если он обновится, не теряя данных на странице.

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

W∴ Balboos, GHB

Я не использую vue и ничего об этом не знаю. Я использую прямой javaScript и прямой php (HTML5, CSS3) - другими словами, я независим от прихотей тех, кто создает эти фреймворки. Вы можете довольно быстро освоить PHP в W3Schools, если еще не знаете его.

Он (как javaScript и многое другое) похож на " C " - и даже имеет много общих функций с тем же именем. Я дам вам один совет, чтобы вы были очень осторожны.

Если вы запускаете сеанс PHP, то session_start() должен быть абсолютно первым в первой строке - как только будут отправлены другие "заголовки", вы не сможете его запустить (вы получите ошибку). Начните сеанс на каждой странице, которую вы хотите знать о значениях.

Наконец, если вы считаете, что все в порядке, отметьте вопрос как ответ, чтобы он не отвлекал помощников от помощи другим.