2010-12-12 48 views
1

我有一個註冊表單,其中大多數字段都是使用用戶的Facebook帳戶預填充的。我想製作一些字段,比如 - 電子郵件,用戶無法覆蓋。任何想法如何解決這個問題?保護預填寫的表單域不被用戶覆蓋(Rails)

更新時間: 這也許會更有意義......我已經是一個註冊表格,那就是:

  1. 首先是預填信息,從用戶的Facebook帳戶,
  2. 然後用戶必須填寫一些額外的字段,如密碼。
  3. 表單提交時使用該表單數據創建新用戶。

我要的是確保在電子郵件,我從了Facebook的和使用預填註冊表格是我創建了一個新的用戶記錄的時間是相同的。

我需要一種方法來比較我從Facebook獲得的電子郵件和我在提交表單時收到的電子郵件,或者以某種方式禁止用戶編輯該字段。

我在想,也許存儲電子郵件到用戶會話......但是,這並不健全的權利...

謝謝!

+0

你抓住了Facebook的信息,並將它存儲在模型中?或者你只是在網頁上展示它,然後在提交表單後將其存儲起來? – Doon 2010-12-12 15:38:55

+0

我在註冊頁面上顯示它,然後用戶必須填寫一些額外的字段,然後提交表單。使用收集的數據,創建用戶記錄 – spacemonkey 2010-12-12 15:43:36

回答

0

正如你所建議的那樣,我會在會話中存儲你想從facebook中保留的任何內容。當然,你不能相信用戶提交的任何內容,所以你在服務器端收到的任何重要信息都需要保留。

如果您不希望它們能夠更改它,則沒有理由爲電子郵件提供輸入字段。我只會顯示它。

您可能要考慮在電子郵件上使用attr_protected :email(或更好地使用attr_accessible),以確保不存在對該字段的無意更新。

2

您可以禁用HTML中的輸入字段。這會阻止用戶編輯值。然而,像螢火蟲這樣的工具使得它「破解」它是微不足道的。大多數人不會,通常這就夠了。

如果您確實想強制執行此操作,則必須在將它們發送到數據庫之前刪除服務器端的參數。一種方法是實施自己的dynamic attr_accessible。另一種方法是從params散列中刪除它們。

+0

我已經更新了我的問題,也許現在會更清楚我想實現的目標 – spacemonkey 2010-12-12 16:52:58