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