我正在设计一个奇怪的东西。在这里,我有两种登录方式。
1) 默认设计使用用户名和密码登录。
2) 使用用户名和密码登录。
第二步的密码(password2)与第一步的密码(password1)不同。我想通过 相同的界面登录,即会有一个登录页面,您需要输入电子邮件或用户名和相应的密码(分别为密码1或密码2)。
是否可以在设计中做同样的事情?
谢谢帕里托什
我正在设计一个奇怪的东西。在这里,我有两种登录方式。
1) 默认设计使用用户名和密码登录。
2) 使用用户名和密码登录。
第二步的密码(password2)与第一步的密码(password1)不同。我想通过 相同的界面登录,即会有一个登录页面,您需要输入电子邮件或用户名和相应的密码(分别为密码1或密码2)。
是否可以在设计中做同样的事情?
谢谢帕里托什
我在此处链接的 Devise wiki 讨论了允许多个用户标识符。
更新:但是,据我所知,出于某种原因,您需要两组单独的凭据(用户 ID/pw1 和电子邮件/pw2)。
我认为您的问题的答案是“虽然可以使用 Devise 来完成,但改变 Devise 比编写自己要付出更多的努力”。如果您查看链接,实际上需要做大量工作才能更简单地更改接受用户 ID或电子邮件以获取相同的密码。在实现您的要求时,它变得更加复杂。
除非您真的从头开始创建自己的系统,否则 Devise 或 Rails 的内置系统has_secure_password
都会对保存密码的属性名称(即,它被称为 )做出几个假设password
。虽然假设有一个(单个)模型包含身份验证信息和此属性,但我认为您没有理由不能拥有两个模型,可能都属于User
模型,每个模型都为用户使用的方法提供加密、存储和验证属性的基本功能,但所有其他功能都由父用户记录及其控制器和视图提供。用户模型中的一些简单逻辑确定正在使用哪种方法,并将该功能分配给适当的子模型。
所以是的,它可以完成,我建议has_secure_password
在你不寻常的情况下会更简单。
但也许值得一问:如果我是第一个遇到这种情况的人,也许有一个替代方案可以满足我的要求,遵循一些现有的惯例或方法。例如,这是一个为几个不相关的服务提供身份验证的“单点登录”界面吗?如果是这样,那可能就是要搜索的东西。
这是使用用户名和电子邮件登录的完整教程。您可以将用户名替换为 user_id 或您需要的任何内容。