2012-02-10 12 views
1

我有一個相當簡單的應用程序,使用devise和cancan進行身份驗證和授權。除非用戶嘗試使用無效的用戶名和/或密碼登錄,否則一切都會很好。發生這種情況時,我們得到一個error loading page,並在日誌以下異常:rails 3.1.0使用cancan獲取未經授權的無效用戶名和/或密碼

Started POST "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2012-02-09 22:23:22 -0600 
    Processing by Devise::SessionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"blahblahblahblah", "user"=>{"login"=>"asdasd", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
    User Load (0.4ms) SELECT "users".* FROM "users" WHERE (lower(username) = 'asdasd' OR lower(email) = 'asdasd') LIMIT 1 
Completed 401 Unauthorized in 74ms 

我不知道我需要設置爲允許授權和/或如何獲得更詳細的日誌,看看到底是什麼沒有被授權?如果我輸入有效憑證,我可以訪問應用程序,應用程序的所有其他部分按預期工作。

+1

你終於知道發生了什麼? – 2012-06-04 22:52:21

回答

1

我知道這個問題已發佈幾個月前,但我熱同樣的問題,並與它戰鬥了幾個小時,覆蓋設計SessionController,設計自定義失敗,調試通過,等..,我終於發現發生了什麼事情,我決定分享這個解決方案,這樣你們就不必經歷這個了。

錯誤「已完成在XXms 401未授權」發生SessionController的在該行的創建方法中:

resource = build_resource(...) 

和資源不能建以來,資源沒有傳遞到服務器。現在問題在於爲什麼資源沒有傳遞給服務器?我正在使用JQUERY手機,它將sign_in作爲AJAX調用發佈,JQUERY無法通過AJAX上傳數據。

您需要添加到您的登錄形式的數據AJAX =假: 在設計/會話/ new.html.erb修改的形式是這樣的:

form_for(resource, :as => resource_name, :url => user_session_url, html: {data: {ajax: false}}) do |f| 

希望幫助別人失望馬路。

+0

Yohann T.這個問題與康康,設計還是兩者有關?你能告訴我更多關於你遇到的問題嗎,我可能會有同樣的問題 – Btuman 2013-06-06 16:02:40

相關問題