在我的 authlogic 中,我试图传递三个参数来验证用户,即(电子邮件、dob、passowrd),因为电子邮件地址在系统中不是唯一的。
但是我没有办法验证它,因为 Authlogic 需要两个参数来创建会话。
在我的 authlogic 中,我试图传递三个参数来验证用户,即(电子邮件、dob、passowrd),因为电子邮件地址在系统中不是唯一的。
但是我没有办法验证它,因为 Authlogic 需要两个参数来创建会话。
最后,我完成了这个实现。
这样做的步骤:
第 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 个参数的方法之一。