Защита предварительно заполненных полей формы от перезаписи пользователем (Rails) - PullRequest
1 голос
/ 12 декабря 2010

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

Обновлен: Может быть, это будет иметь больше смысла ... У меня есть форма регистрации, которая:

  1. сначала заполняется информацией из учетной записи пользователя Facebook,
  2. тогда пользователь должен заполнить некоторые дополнительные поля, такие как пароль.
  3. при отправке формы новый пользователь создается с использованием этих данных формы.

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

Мне нужен способ сравнить электронную почту, полученную с Facebook, и электронную почту, полученную при отправке формы, или как-то запретить пользователю редактировать это поле.

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 декабря 2010

Вы можете отключить поля ввода в HTML. Это мешает пользователям редактировать значения. Тем не менее, такие инструменты, как firebug делают его тривиальным. Большинство людей не хотят, и обычно этого достаточно.

Если вы действительно хотите применить его, вам придется удалить параметры на стороне сервера непосредственно перед отправкой их в базу данных. Один из способов - реализовать собственный динамический attr_accessible . Другой способ - удалить их из хеша params.

0 голосов
/ 12 декабря 2010

Я бы сохранил все, что вы хотите сохранить от Facebook в сессии, как вы предлагаете. Конечно, вы не можете доверять чему-либо, что отправляет пользователь, поэтому все, что вы получили на стороне сервера, что важно, необходимо сохранить.

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

Возможно, вы захотите использовать attr_protected :email (или, что еще лучше, использовать attr_accessible) для электронной почты, чтобы быть уверенным, что непреднамеренных обновлений в поле нет.

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