ruby-on-rails - RoR设计: Sign in with username OR email

标签 ruby-on-rails authentication devise

让用户能够使用电子邮件地址或用户名登录的最佳方式是什么?我正在使用典狱长+设备进行身份验证。我认为这可能不会太难,但我想我需要一些关于在哪里放置所有需要的东西的建议。也许设计已经提供了这个功能?就像在 config/initializers/devise.rb 中一样,您可以编写:

config.authentication_keys = [ :email, :username ]

需要用户名和电子邮件进行登录。但我真的希望只有一个字段用于用户名和电子邮件,并且只需要其中之一。我将用一些 ASCII 艺术来想象,它在 View 中应该看起来像这样:

Username or Email:
[____________________]

Password:
[____________________]

[Sign In]

最佳答案

我已经找到了问题的解决方案。我对它不太满意(我宁愿有一种方法在初始化程序中指定它),但它现在可以工作。在用户模型中我添加了以下方法:

def self.find_for_database_authentication(conditions={})
  find_by(username: conditions[:email]) || find_by(email: conditions[:email])
end

正如 @sguha 和 @Chetan 所指出的,another great resource is available on the official devise wiki .

关于ruby-on-rails - RoR设计: Sign in with username OR email,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2997179/

相关文章:

javascript - 在 Rails 中自动提交 HTML 选择下拉列表

jquery - 供应商目录中的 Assets 未使用 Rails 中的 require_tree 加载

ruby-on-rails - 升级到 rails 5.2.0 后无法指定测试目录

asp.net - 使用父网站登录子站点 : best practice?

javascript - React Native WebView 中的身份验证

ruby-on-rails - Rails + 设计 : Wrong Sign out message

javascript - 使用 devise-Angular 时如何正确获取错误消息(json)

ruby-on-rails - 如何在 Ruby on Rails 中使用 'Ajax Upload'?

java - 为 Oauth 和 Http Basic 身份验证配置 Spring Security

ruby-on-rails-3.1 - 是否可以使用载波进行动态存储路径?