2009-07-13 136 views
0

我有以下宁静的结构:实现忘记密码功能的最佳方式是什么?

  • 我的登录页面使用会话/新动作
  • 我的注册页面的用户/新动作
  • 我登出页面使用会话/销毁行动
  • 我的注册过程使用的用户/创建行动

我需要3个动​​作为:

  • 我忘记了密码页面
  • 开始忘记密码的动作(发送电子邮件)
  • 重置密码,基于令牌

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

澄清:

我知道我可以创建我的现有会话和用户控制器的任何操作(例如,reset_password得到动作或start_reset_password后动作),它只是没有真正坐下吧,看来我我试图让这些控制器做太多的工作。

回答

0

我结束了创建一个名为forgotten_passwords新的控制器,以控制过程

  • forgotten_passwords - 新:地图,我忘记了密码页面
  • forgotten_passwords - 创建:地图开始忘记密码的动作(发送映射到进程的结束(用户看到她的新密码的网页)

我:节目 - 与令牌)

  • forgotten_passwords电子邮件我对这个设计非常满意。我认为它需要一个新的控制器。

  • +0

    这有点荒谬。忘记密码检索功能更适合RPC,而不适用于REST。所以不要太担心这个问题。 – aehlke 2009-07-20 18:03:41

    2

    REST不是黑魔法。找出你的技术目标是什么,然后选择正确的动词与他们一起去。

    我忘了我的密码页面:本质上是一个静态表单,对吗?你希望这是可以缓存的。获取您想要的任何网址。

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

    重置基于令牌的密码:我会考虑实现这个作为登录通过令牌,而不是如果你要这样做,那么它有服务器端的后果,因此应该可能是一个POST或PUT。

    +0

    我想在你的控制器上有什么动作和动作会发生争执,你需要这些动作和动作才能完成任务,保持你的控制器简单,只有魔法7动词。 – 2009-07-13 02:39:17

    相关问题