【发布时间】:2010-03-17 23:53:13
【问题描述】:
我如何覆盖/设置 authlogic 以使用电子邮件字段而不是用户名字段进行注册和身份验证,对于某些注册场景来说,用户名 + 电子邮件有时过于密集
【问题讨论】:
标签: ruby-on-rails ruby authlogic
我如何覆盖/设置 authlogic 以使用电子邮件字段而不是用户名字段进行注册和身份验证,对于某些注册场景来说,用户名 + 电子邮件有时过于密集
【问题讨论】:
标签: ruby-on-rails ruby authlogic
如果您只是删除 login 列并添加一个 email 列,剩下的工作将由 authlogic 完成。
请参阅此示例readme,了解所有可选/必需的数据库列。
【讨论】:
更好的答案试试这个...好吧,如果需要,更新 authlogic gem!
user_session.rb
class UserSession < Authlogic::Session::Base
find_by_login_method :find_by_email #for example or you can make what ever method see exapmle 2
end
--- 示例 2
user_session.rb
class UserSession < Authlogic::Session::Base
find_by_login_method :find_by_anything
end
用户.rb
class User < ActiveRecord::Base
acts_as_authentic
def self.find_by_anything(login)
find_by_login(login) || find_by_email(login) || find_by_id(login)
end
end
【讨论】:
正如亚当的评论包含对这个问题的一个很好的答案。将此添加到您的用户模型中:
class User < ActiveRecord::Base
acts_as_authentic do |c| c.login_field = :email end
end
【讨论】: