我正在使用rails 3和設計,我想有一個SecurityController,我調用像sign_in_user或reset_password這將是一個傳遞參數,如用戶名和密碼的職位。驗證用戶在定製控制器中使用設計
我知道我可以使用before_filter:authenticate_user!但我想認證我自己。如果認證成功,那麼我希望該用戶登錄。
我這樣做的原因是因爲我有一個iphone應用程序,它依賴於對web應用程序的身份驗證來使用應用程序。
我正在使用rails 3和設計,我想有一個SecurityController,我調用像sign_in_user或reset_password這將是一個傳遞參數,如用戶名和密碼的職位。驗證用戶在定製控制器中使用設計
我知道我可以使用before_filter:authenticate_user!但我想認證我自己。如果認證成功,那麼我希望該用戶登錄。
我這樣做的原因是因爲我有一個iphone應用程序,它依賴於對web應用程序的身份驗證來使用應用程序。
我沒有理由還沒有這個做我自己,但是如果你閱讀https://github.com/plataformatec/devise「配置控制器」部分,它展示瞭如何創建一個擴展Devise::SessionsController
定製的控制器,然後點你的認證路由到控制器。我認爲這就是你所要求的 - 正確的?
從頁面引用...
如果在視圖級別的定製是不夠的,你可以通過以下步驟自定義每個控制器:
1)創建自定義的控制,例如一個管理員:: SessionsController:
class Admins::SessionsController < Devise::SessionsController
end
2)告訴路由器使用此控制器:
devise_for :admins, :controllers => { :sessions => "admins/sessions" }
3)由於我們改變了控制器,它不會使用「設計/會話」視圖,因此請記得將「設計/會話」複製到「admin/sessions」。
我只想定製2個方法....驗證並重置密碼。有沒有辦法讓我做到這一點,而無需擴展整個會話控制器和重寫其他方法 – ed1t 2011-03-29 11:21:16
正如我所說,我沒有嘗試擴展這樣的控制器擴展,但如果你必須重寫任何東西,我會非常驚訝。擴展任何類的全部要點是繼承該類的正常行爲,然後根據需要添加或修改。您不應該重寫任何內容,只需重寫需要更改的內容即可。如果您需要在重寫的方法中的某處調用默認行爲,請使用'super'。 – 2011-03-30 05:06:49
我可以證實史蒂夫所說的話。如果您決定要自定義控制器幷包含史蒂夫建議的代碼行(以及複製必要的視圖),那麼即使您將這些自定義控制器留空,Devise也可以完全相同。您沒有專門覆蓋的任何操作只會默認回到Devise的內置操作。您__do__覆蓋的任何動作都可以通過調用'super'作爲原始動作的附加功能 – 2011-04-11 19:53:26