Лучшее решение, которое я нашел до сих пор (это своего рода псевдокод, $isLoggedIn
- псевдопеременная для http auth):
Во время «выхода из системы» просто сохраните некоторую информацию о сеансе, говоря, что пользователь фактически вышел из системы.
function logout()
{
//$isLoggedIn = false; //This does not work (point of this question)
$_SESSION['logout'] = true;
}
В месте, где я проверяю аутентификацию, я расширяю условие:
function isLoggedIn()
{
return $isLoggedIn && !$_SESSION['logout'];
}
Сеанс в некоторой степени связан с состоянием проверки подлинности http, поэтому пользователь остается в системе, пока он сохраняет браузер открытым и пока в браузере сохраняется проверка подлинности http.