#c# #asp.net #cookies #session-timeout
#c# #asp.net #файлы cookie #тайм-аут сеанса
Вопрос:
Сценарий: у меня сложная ситуация, когда нужно поддерживать работоспособность многих модулей [Google Analytics и т.д. и т.п.]. Есть asp.net страница в проекте, которая инициирует запрос на стороннем веб-сайте (после нажатия кнопки Обработать) и перенаправляет пользователя на сторонний веб-сайт. Транзакция обрабатывается на их веб-сайте, а затем управление возвращается обратно на текущую страницу нашего сайта. Вы также можете связать этот сценарий с обработкой данных Paypal, но это не paypal.
Проблема: если время ожидания сеанса истекло, я хочу, чтобы пользователь снова прошел аутентификацию, когда элемент управления попадет на наш веб-сайт после завершения обработки на стороннем веб-сайте. Итак, я подумываю о передаче информации AuthCookie на сторонний веб-сайт, а затем, когда элемент управления вернется на наш веб-сайт, у меня будет информация AuthCookie (представьте, что это сценарий), а затем я захочу снова авторизовать пользователя. Могу ли я сделать это, просто создав AuthCookie снова на основе имени пользователя?
Комментарии:
1. Не очень хорошая идея, я бы не стал распространять такого рода информацию… Если вы параноик, установите действительно длительный тайм-аут
2. Это интересно, потому что на самом деле вы не можете сказать, что пользователь неактивен, потому что он все еще играет под капотом вашего приложения. Но я в чем-то согласен с Эриком. Если пользователь находится далеко от вашего сайта, всегда лучше провести его через официальную страницу входа вместо автоматической проверки. Если это не вписывается в бизнес-сценарий, то установите длительный тайм-аут.
Ответ №1:
Это действительно зависит от используемой вами системы обработки транзакций. Если вы проверяете результат транзакции, вызывая их API, то в ответе обычно указывается идентификатор пользователя или что-то еще, что вы можете привязать к идентификатору пользователя. Вы можете сохранить имя пользователя в файле cookie, файлы cookie предназначены для каждого домена или поддомена, и они не будут отправлены на веб-сайт обработки транзакций, если он находится в другом домене, чем ваш, что, скорее всего, так и есть. Получите или выведите имя пользователя из ответа о результате транзакции, сравните его с тем, которое вы получаете из своего файла cookie. Если они совпадают, войдите в систему пользователя. Регистрация пользователя только на основе содержимого cookie во многих отношениях рискованна. Прежде всего, любой может установить файл cookie с любым именем в нем в браузере. Во-вторых, если вы регистрируете пользователя только на основе файла cookie, вы, по сути, получите сеанс, срок действия которого никогда не истекает. Это не то, что вы хотите. Для дополнительной безопасности вы можете проверить время транзакции из ответа о результате транзакции и отказаться от входа в систему, если это было слишком давно.
О, и в вашем вопросе вы упоминаете, что вам «нужно поддерживать работоспособность многих модулей», но вы не уточняете, что вы имеете в виду под этим. Поэтому я просто игнорирую этот фрагмент. Не уверен, как выглядит модуль happy =)