2013-09-30 79 views
2

我試圖把#registerable關斷裝置和後剛剛註冊通過控制檯和種子數據的用戶不過我有與標誌的問題。設計的用戶無法登錄

  1. 我創建了一個用戶通過控制檯:User.create!(email:'[email protected]',密碼:'password',用戶名:'用戶名')
  2. 它通過驗證並保存到數據庫
  3. 我無法登錄(通過網站表格),當我提供電子郵件時:[email protected]和密碼:密碼
  4. 這是密碼不過,在控制檯:

    u = User.find_by_email('[email protected]') 
    
    u 
    => #<User id: 6, email: "[email protected]", encrypted_password: "$2a$10$xd0PMJ.qDDu6VtFd6i2EM.bQ0h1rvODyzaqFdzo3Uo4C...", username: "user", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-09-30 01:25:16", updated_at: "2013-09-30 01:25:16"> 
    
    
    u.valid_password? 'password' 
    => true 
    

我已經試過多個用戶,我已經試過DB/seed.rb創建它。再次,它進入數據庫,一切都很好。它只是不會登錄。我也嘗試添加password_confirmation字段與一個匹配的密碼,沒有骰子。

如果我打開:在用戶模型中註冊,轉到註冊頁面,註冊用戶,我可以使用該用戶(通過表單創建)登錄。

我唯一的想法是,加密密碼的生成方式有一些差異?但是這並不成立,因爲我可以在web創建的用戶上運行相同的find_by_email/valid_password檢查。

任何幫助將不勝感激?

編輯:

我不使用可證實

,這裏是我的設計屬性:

 devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatablen 

EDIT2 現在我不能用我的網站創建的帳戶登錄。我需要做更多的調試。

+0

請解釋當您嘗試登錄時看到的內容 –

+0

它重新呈現設置了閃存標題的用戶/ sign_in頁面:「無效的電子郵件或密碼」。 Rails服務器日誌中的401錯誤 – Mike

+0

如果在控制檯中創建用戶,然後通過瀏覽器使用相同的密碼,會發生什麼?加密的密碼是否匹配? –

回答

1

我解決了這個問題,他們的電子郵件地址。我在設計初始化器中做了一個錯誤配置。我誤解了config.authentication_keys這一行,並認爲它是/或者是鍵而不是所有的鍵。如果其他人通過谷歌找到了這個,我建議回到自動生成的初始化器或git回滾到它。我認爲這與用戶創建或設計的可註冊模塊的差異沒有任何關係。

2

假設你正在使用Confirmable,使用以下方法來創建用戶:

User.create!(email: '[email protected]', password: 'password', username: 'username', confirmed_at: Time.now) 

否則,設計將等待用戶確認從未發生

+0

當您查看問題中的控制檯輸出時,看起來沒有確認正在使用。 –

+0

你是對的,道歉,我的壞 –