Я использую AuthLogic для активации/аутентификации новых пользователей, и в настоящее время я использую данные сеанса, чтобы система узнала, куда отправить нового пользователя после их активации (например, какой проект показывать их). Таким образом, он использует ряд переменных, таких как session [: project_id], которые должны быть там, когда пользователь активирует свою учетную запись в первый раз.Как сохранить данные сеанса с помощью регистрации пользователя
Проблема в том, что произойдет, если данные сеанса отсутствуют, когда пользователь активирует? Несколько случаев:
- Пользователь регистрируется на одном браузере, но затем открывает их активации электронной почты на другой,
- пользователь регистрируется/активирует с помощью режима инкогнито,
- пользователь ждет день или два до того активируя свою учетную запись.
Из того, что я могу сказать, используя данные сеанса представляет уязвимость UX, потому что, когда она не сохраняется, пользователь заканчивает в бесполезном месте (или даже хуже, 500-ошибку, связанные с ожидая переменный сеанс, что делает не существует).
На мой взгляд, информация, такая как project_id (и несколько других переменных), надежно хранится от регистрации до активации. Я опасаюсь создания новых полей базы данных для этой ограниченной и временной цели, но я открыт для всех предложений. Как я могу закрыть эту лазейку?
В ответ на ответ Омара:
В UserMailer.rb У меня есть определенные activation_instructions (пользователей), которые посылают на activation_instructions электронной почты для новых пользователей. В настоящий момент я вижу следующее:
def activation_instructions(user)
@user = user
@account_activation_url = activate_url(user.perishable_token)
mail(:to => "#{user.login} <#{user.email}>", :subject => "Welcome!")
end
Как добавить параметры для этого параметра? Скажем, у меня есть параметры project_id и category_id?
Я добавил несколько подробностей выше. – sscirrus
Как бы то ни было, всякий раз, когда вы вызываете UserMailer.deliver_activation_instructions, вы также должны передавать параметр project_id и изменять вид электронной почты, чтобы принять это во внимание. –