Как определить, что пользователь не вышел из системы, не нажав кнопку "Выйти"?

Как определить, что пользователь не вышел из системы без нажатия кнопки выхода из системы с помощью jQuery или javascript.

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

Вот моя кнопка выхода из системы:

<a id="webviewbtn" href="#"><img src="img/logout.png" style="float:right;" /></a>

2 ответа

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

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

//using php here
setcookie('customer',1); //customer is logged in

setcookie('customer',0); //customer is not logged in

на вашем веб-интерфейсе вы можете использовать jquery/javascript для проверки этого статуса. Я предполагаю, что здесь у вас есть плагин JQuery Cookie включен https://github.com/carhartl/jquery-cookie

if ( $.cookie('customer') === 1 ){
    $('#webviewbtn').show(); //show logout button
}
else{
    $('#webviewbtn').hide(); //no logout button needed
}

в этом сценарии действительно важно, чтобы cookie-файл "клиент" имел тот же домен и ту же продолжительность, что и cookie-файл сеанса. В противном случае возвращающиеся клиенты могут иметь cookie-файл клиента, равный 1, но cookie-файл сеанса уже устарел. Кроме того, все действия, вызванные от клиента, должны быть проверены в бэкэнде, чтобы убедиться, что состояние клиента === 1 все еще действует там. В противном случае у вас возникнет серьезная проблема с безопасностью, поскольку каждый может установить для этого файла cookie значение 1:)

При выполнении любых действий на вашей веб-странице вызовите метод async или синхронно веб-сервис, который проверяет пользователя.

Если сервер вернет сообщение "все в порядке", то пользователь все равно будет авторизован. Это действие можно выполнить при рендеринге кнопки выхода из системы или когда пользователь выполняет любое другое "важное" действие.

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

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

Другие вопросы по тегам