2014-08-28 59 views
0

一段時間以前,我一直遵循一系列關於如何實現用戶名的說明,這些用戶名可以在Devise中登錄。在執行指令中的代碼後,我注意到我無法再登錄。註冊,是的,但沒有。試圖用閃光燈無效登錄名/密碼通知登錄剛纔的結果設計拒絕讓我登錄

valid_user?方法返回true,所以它不是我記住密碼時笨拙的問題。我發現一個相關的問題在這裏討論https://groups.google.com/forum/#!topic/plataformatec-devise/4RHM10yJFOw但沒有提到那裏解決了我的問題。最後,我重寫了Devise :: SessionsController的創建方法,以逐步查看發生了什麼。我注意到有一些時髦的關於它的第一行:

self.resource = warden.authenticate!(auth_options) 

其輸出...

!! #<ArgumentError: uncaught throw :warden> 

任何人有任何想法,以什麼可能會發生在這裏。

說明:https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

+0

你的代碼是什麼樣的? – sevenseacat 2014-08-28 01:19:39

+0

聽起來很瘋狂,但你確定你還沒有登錄? – Joel 2014-08-28 14:32:59

回答

0

所以經過一些環顧四周,我發現我的問題是在我的ApplicationController一些代碼,在軌道4,5必要的,因爲強大的PARAMS制止。

devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:first_name, :last_name, :login, :username, :email, :password, :remember_me) } 

我最初包括:在允許的屬性的列表,而不是這是什麼被列入表單上的登陸場(虛擬ATTR,可以是用戶名/電子郵件)電子郵件:用戶名和。所以,一個加重的難以追查解決方案的愚蠢錯誤。