簡體   English   中英

帶多個電子郵件的設計登錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM