Rails 3 + Authlogic +传递三个参数来验证用户

时间:2012-11-30 04:30:55

标签: authentication ruby-on-rails-3.2 authlogic

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

但我没有得到验证它的方法,因为Authlogic有两个参数来创建会话。

1 个答案:

答案 0 :(得分: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步:更改UserModel

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个参数的方法之一。