Я слышал этот вопрос много раз, мой ответ, как правило, «зачем вам это?». Один не требует другого, и время его истечения должно определяться с использованием различных критериев.
Состояние сеанса не требует входа пользователя в систему. Приложению даже не требуется использовать аутентификацию для использования состояния сеанса. У вас может быть веб-приложение, в котором пользователь уже использует состояние сеанса еще до входа в систему, и все еще использует его после выхода из системы. «Сеанс» здесь - это когда клиент (веб-браузер) подключается к сайту, перепрыгивает через несколько страниц и уходит. Независимо от того, вошел ли пользователь в систему или нет, это не имеет значения. Если вы закроете свой браузер, откроете новый и вернетесь на сайт, будет создан новый сеанс. Но сервер не знает, что вы закрыли старое окно браузера, поэтому исходный сеанс все еще существует. В целях масштабируемости (главным образом памяти) мы прекращаем наши сеансы и освобождаем его память и ресурсы для отслеживания сеансов. Если для выполнения нового запроса клиенту требуется слишком много времени, новый запрос создаст новый сеанс.
С другой стороны, вы можете использовать аутентификацию и вообще не использовать состояние сеанса. Я обычно запускаю свои приложения с отключенным состоянием сеанса и состоянием просмотра и включаю их только в случае необходимости и постранично (или контролируем для представления состояния).
Время истечения сеанса должно определяться объемом памяти, используемой каждым сеансом, объемом памяти, доступной на веб-сервере, количеством одновременно работающих пользователей и другими потребностями в масштабируемости. Обычно оно колеблется от нескольких минут до часа.
Аутентификация сохраняется как cookie на клиенте и в основном не использует ресурсы сервера. С точки зрения масштабируемости срок действия входа в систему обычно может быть больше срока действия сеанса. На самом деле пользователь может оставаться в системе на неопределенный срок. Когда срок действия аутентификации сохраняется короче, обычно это делается из соображений безопасности. Вы не хотите, чтобы учетная запись вашего банковского сайта была доступна кому-то еще, если вы уйдете с компьютера на 15 минут, верно? Вы можете войти в Gmail или Facebook и выбрать «запомнить меня» и вернуться через несколько дней, и вы будете все еще вошли в систему. Но, конечно, это будет новый сеанс, потому что ни одно веб-приложение не должно удерживать сеанс данные за несколько дней.
Теперь я видел, как много людей используют одинаковую продолжительность времени для аутентификации и истечения сеанса. И многие также Abandon () или Clear () их сеанс, когда пользователь выходит из системы. Но они забывают, однако, что вам все еще нужно управлять случаем, когда пользователь все еще вошел в систему, но сеанс истек (что создает новый пустой сеанс при следующем запросе), или когда пользователь аутентификация истекла, но не в их сеансе (требуя, чтобы они снова вошли в систему, но перенесла старый не истекший сеанс, возможно, с конфиденциальными данными другого пользователя) . Забота об этих случаях очень важна, независимо от того, какое время ожидания вы в конечном итоге выберете для своего приложения.