实施忘记密码功能的另一种方法是什么?

时间:2009-07-13 02:18:26

标签: ruby-on-rails rest

我有以下结构:

  • 我的登录页面使用会话/新操作
  • 我的注册页面用户/新操作
  • 我的注销页面使用会话/销毁操作
  • 我的注册流程使用users / create action

我还需要3个动​​作:

  • 我忘记了密码页
  • 开始忘记密码操作(发送电子邮件)
  • 根据令牌重置密码

这3个动作在一个宁静的世界中适合哪里?

澄清:

我知道我可以在我现有的会话和用户控制器上创建任何操作(例如,reset_password获取操作或start_reset_password后期操作)它只是没有真正坐好,似乎我试图让这些控制器也这样做很多工作。

2 个答案:

答案 0 :(得分:2)

REST不是黑魔法。弄清楚这些页面的技术目标是什么,然后选择合适的动词来与它们一起使用。

我忘记了密码页面:基本上是一个静态表单,对吧?你希望它可以缓存。获取您想要的任何URL。

发送电子邮件:您不希望重复的代价高昂的操作,并且您希望每次用户请求时执行:POST或PUT在您想要的任何URL上。哎呀,如果你愿意的话,你可以把它和上面的URL一样,但是我没有看到特别紧迫的需要。

基于令牌重置密码:我考虑将其实现为login-via-token,但是如果你要按照自己的方式进行,那么它会产生服务器端的后果,因此应该是一个POST或PUT。

答案 1 :(得分:0)

我最终创建了一个名为forgotten_passwords的新控制器来控制进程

  • forgotten_passwords - new:映射到我忘记了密码页
  • forgotten_passwords - create:maps to started忘记密码操作(发送带令牌的电子邮件)
  • forgotten_passwords - show:映射到流程结束(用户看到新密码的页面)

我对这个设计很满意。我认为它需要一个新的控制器。