0

在我的 authlogic 中,我试图传递三个参数来验证用户,即(电子邮件、dob、passowrd),因为电子邮件地址在系统中不是唯一的。

但是我没有办法验证它,因为 Authlogic 需要两个参数来创建会话。

4

1 回答 1

0

最后,我完成了这个实现。

这样做的步骤:

第 1 步 - 在我们的控制器中(例如class UserSessionsController < ApplicationController):

login = {:dob => dob_date, :email => primary_email }
@user_exist = UserSession.new(:email => login, :password => password)
if i@user.save
    redirect_to "/UserDashboard"
    return
end

步骤 2. UserSessionModel 中的更改

class UserLoginSession < Authlogic::Session::Base

    find_by_login_method :find_by_user_email_or_date_of_birth

end

第 3 步:更改用户模型

class User < ActiveRecord::Base

  acts_as_authentic do |c|
    c.login_field = :email # email is the login field
    c.validate_login_field = false 
          # There is no login field, so don't validate it
    c.validations_scope = :dob
  end

  def self.find_by_user_email_or_date_of_birth(login)
    dob = login[:dob]
    primary_email = login[:email]
    find_by_email_and_dob(primary_email, dob)
  end      
end

这是使用 authlogic 进行身份验证时提供 3 个参数的方法之一。

于 2013-05-31T13:06:41.090 回答