Имеете дело с просроченной аутентификацией для частично заполненной формы? - PullRequest
1 голос
/ 11 марта 2010

У меня большая веб-форма, и я хотел бы предложить пользователю войти в систему, если истек срок его сеанса, или попросить его войти в систему при отправке формы. Кажется, что их вход в систему при отправке формы создает много проблем, потому что они перенаправляются на страницу входа, а затем данные обратной передачи для исходной отправки формы теряются.

Так что я думаю о том, как предложить им асинхронно войти в систему после окончания сеанса. Таким образом, они остаются на исходной странице формы, на панели появляется сообщение о том, что сеанс истек, и им необходимо войти в систему, асинхронно регистрируется, панель входа исчезает, а пользователь все еще находится на исходной частично заполненной форме и может представь это. Это легко сделать, используя существующие элементы управления членством ASP.NET? Когда они отправят форму, мне нужно будет беспокоиться о ключе сеанса? Я имею в виду, мне интересно, будет ли исходный ключ сеансового ключа до истечения срока сеанса не совпадать с новым, сгенерированным после асинхронного входа в систему (я до сих пор не понимаю деталей того, как ASP.NET отслеживает идентификаторы / идентификаторы сеанса).

Редактировать: Да, я действительно обеспокоен истечением срока аутентификации. Пользователь должен пройти проверку подлинности, чтобы представленные данные были признаны действительными.

Ответы [ 3 ]

2 голосов
/ 11 марта 2010

Срок действия сеанса отличается от срока действия аутентификации - вам, вероятно, нужно определить, что вас беспокоит.

Сессии истекают через 20 минут бездействия (по умолчанию) и очищают объект Session. По истечении этого срока все, что вы спрятали в Session, исчезнет.

[Формы] Аутентификация истекает через 30 минут бездействия (по умолчанию) - хотя она обновляется только каждые полураспада. Итак, на самом деле - он может истечь через 15 минут бездействия (по умолчанию). По истечении этого срока следующий запрос будет перенаправлен на вашу страницу входа.

Сеанс и Аутентификация на самом деле не связаны - вы можете быть анонимным (не прошедшим аутентификацию) пользователем и при этом иметь Session - или вы можете войти (аутентифицироваться), но не иметь Session. Ваш Session может истечь раньше, чем ваша аутентификация или наоборот.

Вы можете просто проверить значения срока действия для сеанса и / или аутентификации. Проблема с сеансом заключается в том, что он жует ресурсы сервера, а сохранение аутентификации является проблемой безопасности.

Если вы просто заинтересованы в том, чтобы их оба оставались активными на время действия вашей формы, небольшой кусочек JavaScript, который попадет на страницу сервера с помощью XmlHttpRequest или iframe, сбросит срок действия обоих (потому что скольженияExpiration).

Есть и другие приемы, но было бы полезно сначала лучше определить проблему.

1 голос
/ 11 марта 2010

Очень хороший ответ @ Марк Брэкетт читает комментарий ОП ниже. Я считаю, что это его конечная цель.

В элементе button / submit вы хотите написать метод javascript, который через ajax будет опрашивать сервер, чтобы узнать, аутентифицированы ли они по-прежнему.

Если они авторизованы, вы все равно хотите вернуть true и позволить форме выполнять регулярную отправку; если возвращается false, вы не хотите, чтобы форма отправлялась. На этом этапе вы захотите использовать javascript для отображения либо «окна» внутри браузера (например, плавающий div), либо для открытия действительно нового окна, чтобы они могли войти (я бы порекомендовал первый метод), чтобы это новое окно позволит им войти через ajax, а затем спрятаться / закрыть себя.

Затем, после того как они снова нажмут кнопку «Отправить», это окно исчезнет, ​​и они смогут успешно опубликовать форму.

1 голос
/ 11 марта 2010

Есть много способов сделать это: вы можете сохранить куки на компьютере пользователя, или вы также можете разделить форму на более мелкие формы (например: шаг 1 - введите вашу личную информацию, шаг 2 - введите информацию для выставления счета и т. Д. .).

Разделение вашей формы позволяет пользователю быстрее вводить данные, что снижает шансы истечения срока их сессии.

Добавление файла cookie позволяет сделать так, чтобы информация о человеке оставалась там, даже если вы войдете в нее позже. Просто убедитесь, что эти файлы cookie сброшены в конце.

...