Аутентификация пользователя после #create - PullRequest
1 голос
/ 22 октября 2010

Похоже, что это продолжает появляться в различных проектах, и мне интересно, есть ли у кого-нибудь отличное решение:

У нас есть приложение Rails с аутентификацией Authlogic.Первоначально, есть хороший, чистый RESTful ListingsController, который требует, чтобы пользователь вошел в систему, прежде чем он сможет публиковать / создавать:

before_filter :require_user, :only => [ :new, :create]

Однако, увидев это в действии, мы решили попробовать другойпоток, в котором незарегистрированные пользователи могут сначала заполнить форму для Листинга , а затем получить запрос на регистрацию / вход в систему.Если они откажутся от регистрации, нам не нужно создавать листинг.Если они аутентифицируются, мы хотим связать листинг с current_user, как обычно.

Пара возможных ошибок:

  1. Новая форма листинга позволяет пользователям загружать файлы, которые мыМагазин с Paperclip.
  2. Аутентификация может происходить через серию переадресаций для Facebook или Twitter.

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

Спасибо!

1 Ответ

3 голосов
/ 22 октября 2010

Одним из решений является создание уникального токена и сохранение его в вашей модели (скажем, Listing.pending_id), а затем запись того же токена в файл cookie. Позже, когда клиент впервые проходит аутентификацию, вы проверяете файл cookie 'pending_id' и связываете его с соответствующим списком, если он найден.

Вам нужно запланировать задачу, чтобы удалить все незаконченные списки старше (x), и убедиться, что все ожидающие листинги были исключены из обычных операций (поиск, листинг и т. Д.). В зависимости от вашего приложения вам лучше создать отдельную модель PendingListing и таблицу базы данных.

Недостатком этого подхода является то, что список не будет восстановлен, если будет добавлен на одном компьютере / браузере, но будет аутентифицирован на другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...