И Session.Clear (), и Session.Abandon () избавляются от переменных сеанса. Насколько я понимаю, Abandon () завершает текущий сеанс и вызывает создание нового сеанса, что приводит к срабатыванию событий End и Start.
В большинстве случаев кажется предпочтительным вызывать Abandon (), например, при выходе пользователя из системы. Существуют ли сценарии, в которых я бы использовал вместо этого Clear ()? Есть большая разница в производительности?
источник
Session.Abandon()
как «выход из системы» во внутреннем приложении с использованием проверки подлинности Windows - пользователям не нужно было повторно проходить проверку подлинности (Chrome, FF), но сеанс былТолько использование Session.Clear () при выходе пользователя из системы может создать брешь в безопасности. Поскольку сеанс все еще действителен для веб-сервера. Тогда достаточно тривиально обнюхать, получить идентификатор сеанса и захватить этот сеанс.
По этой причине при выходе пользователя из системы было бы безопаснее и разумнее использовать Session.Abandon (), чтобы сеанс был уничтожен и создан новый сеанс (даже если страница пользовательского интерфейса выхода из системы будет частью нового сеанса, в новом сеансе не будет никаких сведений о пользователях, и захват нового сеанса будет эквивалентен наличию нового сеанса, поэтому он будет отключен).
источник
Session.Abandon
уничтожает сеанс, как указано выше, поэтому вы должны использовать это при выходе из системы. Я думаю,Session.Clear
что его можно использовать для корзины покупок на сайте электронной коммерции. Таким образом, корзина очищается без выхода пользователя из системы.источник
Session.Abandon
только для очистки определенной корзины покупок?У меня была эта проблема, и я попробовал оба, но мне пришлось довольствоваться удалением такой ерунды, как "pageEditState", но не удалять информацию о пользователе, чтобы мне не пришлось искать ее снова.
источник