在我的authlogic中,我试图传递三个参数来验证用户即(email,dob,passowrd),因为电子邮件地址在系统中并不是唯一的。
但我没有得到验证它的方法,因为Authlogic有两个参数来创建会话。
答案 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个参数的方法之一。