Как дать пользователю возможность войти в систему при сбое авторизации при выполнении действия POST? - PullRequest
1 голос
/ 06 января 2011

Я бы хотел запрограммировать систему аутентификации со следующими функциями:

  • Использовать ASP.NET MVC2
  • Использовать SQL Server
  • (Вероятно)на основе MembershipProvider
  • Регистрация пользователя с подтверждением по электронной почте
  • Ролевая авторизация

.. и последнее, но не менее важное: - Дайте пользователю возможность войти в систему и /или зарегистрируйтесь, если авторизация не пройдена при выполнении действия POST.

Последняя функция является наиболее сложной.Когда пользователь выполняет действие POST (или какой-либо другой вид запроса) и время сеанса истекает (или пользователь не авторизован по какой-либо другой причине), пользователь должен быть перенаправлен в форму входа / регистрации.Во время входа в систему и / или регистрации данные данных запроса (POST, GET и т. Д.) Должны быть где-то сохранены.После того, как пользователь успешно авторизован, данные должны быть восстановлены, и запрос должен быть выполнен с использованием сохраненных данных.

Решение, которое я имею в виду, состоит в том, что данные запроса сериализуются и сохраняются в базе данных, идентифицируемой некоторыми уникальнымиключ.Этот уникальный ключ помещается в cookie и / или в скрытое поле в форме входа / регистрации.Когда пользователь успешно вошел в систему, контекст можно восстановить с помощью этого ключа, а действие можно выполнить с помощью этих «старых» данных запроса.

Самое сложное для меня - это то, что я не знаю, какие данныеЯ должен сохранить и как и где восстановить контекст.Я хочу иметь возможность использовать встроенные атрибуты, такие как [Authorize] и Routing.

Я (думаю) я смотрел практически везде, но без удовлетворительных результатов.Я надеюсь, что кто-то может помочь мне с этим.Заранее спасибо!

1 Ответ

0 голосов
/ 06 января 2011

Онлайн корзина покупок обычно позволяет анонимным пользователям положить несколько вещей в корзину, прежде чем они смогут зарегистрироваться / войти в систему.Но, к сожалению, я не знаком с этими методами и не хочу давать вам недоделанные объяснения.

С другой стороны, вот некоторые распространенные практики, косвенно решающие эту проблему:

  • предлагает пользователю сначала зарегистрироваться перед тем, как перейти на страницу ввода данных
  • перехватить POST с помощью окна входа ajax / popup
  • напомнить пользователю об истечении времени ожидания сеанса и разрешить пользователю продлить сеансне покидая страницу ввода данных
  • автоматически сохраняйте страницу ввода данных для периодически авторизованного пользователя
  • разбивайте большую страницу ввода данных на несколько более мелких, уменьшая время ожидания

Надеюсь, это поможет.

...