[英]Devise Login w/ Multiple Emails
我將所有用戶的電子郵件存儲在單獨的表中。 每個用戶都有很多電子郵件。 我遇到的問題是如何使設計者使用這些電子郵件進行登錄,而不是在users表中查找。 我知道我需要在find_for_database_authentication方法中添加某種條件,但似乎無法弄清楚。 我嘗試了以下類似的方法,但是沒有運氣:
login = conditions.delete(:login)
where(conditions).where(:emails => { :name => login }).first
不確定我是否以正確的方式進行了操作,但是我只是在config / initializers / devise.rb中創建了一個新策略
require 'devise/strategies/authenticatable'
module Devise
module Strategies
class MultipleEmailAuthenticatable < Authenticatable
def authenticate!
email = Email.find_by_email_address(authentication_hash[:email])
unless email
fail(:invalid)
return
end
resource = valid_password? && email.member
if validate(resource){ resource.valid_password?(password) }
resource.after_database_authentication
success!(resource)
elsif !halted?
fail(:invalid)
end
end
end
end
end
您在哪里覆蓋find_for_database_authentication方法?
可以使用電子郵件地址以外的其他方式登錄嗎? 如果您可以允許用戶使用用戶名或類似名稱登錄,則有關於該主題的devise Wiki文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.