2011-04-29 19 views
2

我有一個用戶可填寫的表單,點擊「Create」按鈕將發出一個POST請求,用表單數據在數據庫中創建一個新條目。RoR:如何在POST之前認證用戶

現在,只有登錄的用戶應該被允許創建數據庫條目,但我希望所有用戶都能夠填寫表單。只有當點擊「創建」時,我是否希望我的應用程序將沒有登錄的用戶重定向到登錄頁面。登錄後,我想繼續處理POST請求並創建數據庫條目,而用戶不必再次輸入所有表單數據。

處理這個問題的最佳方法是什麼?將POST數據放入會話中?但是,然後,在成功登錄後,我想在原始控制器/操作中創建數據庫條目(以便不重複代碼),並且從我的應用程序(在成功登錄後的方法中)發出POST請求奇怪。任何更好的想法?

謝謝!

回答

0

你沒有提到你如何進行身份驗證,所以我懷疑你是手動完成的。如果您使用(並且我強烈建議您這樣做),像Devise這樣的註冊用戶,您只需將Devise的身份驗證助手添加到您的控制器即可。

要做到這一點手動,每次用戶註冊,你設置一個會與他/她綁定的會話ID變量。然後,您只需檢查是否他/她已註冊。如果沒有,你只是不允許行動和重定向。

+0

我使用devise,但是before_filter authenticate_user!將不會幫助POST請求,會嗎? 同樣,我想將用戶重定向到登錄頁面,並在成功授權後返回到處理POST請求的創建方法 – Alexander 2011-04-29 06:44:38

+0

是的,對於控制器的每個動作,它都可以工作,如果你想要重定向回來,只需使用redirect_to:back。 – Spyros 2011-04-29 06:48:53

+0

哦,我不知道 - 關於如何製作authenticate_user的任何想法!與omniauth集成。我的登錄過程是通過Facebook和omniauth。所以我想要authenticate_user!重定向到Facebook,然後回到我的POST請求... – Alexander 2011-04-29 07:03:58

相關問題