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