Как реализовать постепенное взаимодействие с использованием Devise и Rails 3? - PullRequest
4 голосов
/ 18 января 2011

Я пытаюсь реализовать поток веб-сайтов с отложенной регистрацией (также называемый отложенной аутентификацией или постепенным взаимодействием) с использованием Devise + Rails.

По постепенное взаимодействие ,Я имею в виду

"Не заставляйте пользователя входить в систему, пока ему это не понадобится, но позвольте ему поиграть и запомниться на сайте"

Яищем простой способ сделать это, используя devise .Я чувствую, что это то, что многие другие должны были сделать, но я не нашел документации по этому вопросу.

Следующий подход звучит хорошо в моей голове, поэтому я собираюсь начать с него:

  1. Создание пользователей, которые «запоминаются» только
  2. Когда к определенным страницам обращаются, требуется, чтобы у этих пользователей было больше данных, таких как имя пользователя и пароль, через что-то вроде "before_filter: authenticate_user! "в соответствующих контроллерах.

Имеет ли этот подход смысл?Есть ли лучший?Есть ли у вас подход постепенного вовлечения в формы регистрации / регистрации с использованием Devise + Rails, которым вы готовы поделиться?

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Я думаю, что смысл статьи, которую вы нам дали, состоит в том, чтобы сказать:

  • запрашивать регистрацию только в случае необходимости.

Что это значит?

Давайте рассмотрим пример.Вы веб-сайт электронной коммерции.

Когда клиент должен зарегистрироваться "наконец"?Во время оформления заказа.Никогда раньше.Так что вам не нужно ничего хранить или помнить о пользователе. Устройство никогда не используется, здесь никогда не используется.

Как вы управляете корзиной покупок неподписанного пользователя?Я бы сказал, база данных, с идентификатором сессии в качестве первичного ключа.Или Вы можете сохранить все идентификаторы предметов в cookie для дальнейшего использования.

В вашем коде, если у вас есть действие с именем checkout, просто установите в контроллере before_filter authenticate_user!, :only => [:checkout]

Но, может быть, у вас есть некоторые ограничения, например, возможность сохранить ник своего пользователя, например, не подписывая его?

1 голос
/ 13 апреля 2013

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

https://github.com/plataformatec/devise/wiki/How-To:-Email-only-sign-up

Я использовал это руководство для сайта, который я делал некоторое время назад, когда мы просили только адрес электронной почты, чтобы зарегистрироваться, а затем отправил им письма для завершения регистрации / добавления пароля.

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

Вы можете хранить все неподписанные данные пользователя в файлах cookie и передавать их в базу данных после входа пользователя, если вам нужно.

...