设计:让用户以两种方式登录

时间:2012-11-28 14:24:48

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我正在设计一个奇怪的事情。在这里,我有两种类型的登录。

1)使用用户名和密码默认设置登录。

2)使用用户ID和密码登录。

第二步中的密码(password2)与第一步中的密码(password1)不同。 我想通过使用相同的界面 登录,即将有一个登录页面,您需要输入电子邮件或用户ID和相应的密码(分别为password1或password2)。

是否有可能在设计中做同样的事情?

由于 Paritosh

2 个答案:

答案 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或您需要的任何内容替换用户名。