1

我有一个注册表单,其中大多数字段都是使用用户的 Facebook 帐户预先填写的。我想让一些字段,比如 - 电子邮件,用户无法覆盖。任何想法如何解决这个问题?

更新: 也许这会更有意义......我有一个注册表单,它是:

  1. 首先预填充来自用户 Facebook 帐户的信息,
  2. 然后用户必须填写一些额外的字段,例如密码。
  3. 提交表单时,使用该表单数据创建新用户。

我想要的是确保我从Facebook获得并用于预填注册表单的电子邮件在我创建新用户记录时是相同的。

我需要一种方法来比较我从 Facebook 收到的电子邮件和我在提交表单时收到的电子邮件,或者以某种方式禁止用户编辑该字段。

我在考虑也许将电子邮件存储到用户会话中……但这听起来不对……

谢谢!

4

2 回答 2

2

您可以禁用 HTML 中的输入字段。这会阻止用户编辑值。然而,像 firebug 这样的工具使得“破解”它变得微不足道。大多数人不会,通常这就足够了。

如果您真的想强制执行它,则必须在将参数发送到数据库之前删除服务器端的参数。一种方法是实现您自己的动态 attr_accessible。另一种方法是将它们从参数哈希中删除。

于 2010-12-12T16:05:19.897 回答
0

正如你所建议的,我会在会话中存储你想从 facebook 中保留的任何内容。当然,您不能信任用户提交的任何内容,因此您在服务器端收到的任何重要内容都需要保留。

如果您不希望他们能够更改它,则没有理由为电子邮件提供输入字段。我只是展示它。

您可能需要考虑attr_protected :email在电子邮件中使用(或者更好的是使用 attr_accessible),这样您就可以确保该字段没有意外更新。

于 2010-12-12T18:58:19.743 回答