0

杂项帐户管理页面如何适应 Rails 3 中的 RESTful 设计?

例如,用户注册(创建操作),然后被转发到注册成功页面(?操作),他们现在被要求通过带有令牌(通过电子邮件发送给他们)的 url 验证他们的电子邮件地址。

当他们单击电子邮件中的链接时,从技术上讲,他们正在“更新”他们的帐户作为验证过程的一部分,对吗?所以我认为这会以某种方式映射到“更新”操作,但更新操作需要一个 PUT 请求。那是对的吗?你如何通过电子邮件完成这项工作?

我还想知道忘记密码、重置密码等如何也适合 RESTful 设计?只是想解决这个问题。

4

2 回答 2

1

仅仅因为您有结果设计,并不意味着您必须将自己限制为仅使用 1:1 映射到 Get/Post/Put/Delete 的 CRUD 动词。也就是说,如果你想真正实现RESTful,你可以开始考虑将其中的一些东西视为它们自己的资源。例如用户验证:

  • 用户注册,并收到一封验证电子邮件,你已经把这一切都摆平了,看起来像
  • 验证网址如下所示:http ://app.com/user_verifications/new?token=foobar (GET)
  • 他们跟随 url,可能会出现“你好 Dan,欢迎回来!单击此处验证您的帐户”,此时您向http://app.com/user_verifications提交表单以触发那里的创建操作。现在在后端,您可以执行您想要的任何操作,更新用户,将它们设置为活动,或实际创建“用户验证”模型。

不是一个完美的例子,但想法是您提供的 RESTful 接口具有额外的资源,在本例中为“user_verifications”,并且用户通过 HTTP 方法对其进行操作以实现用户的目标。您可以使用“UserSession”类型的资源甚至与特定的“ForgotPassword”资源一样将类似的逻辑应用于重置/忘记密码。

于 2011-04-23T23:50:21.527 回答
0
  1. 成功页面只是create.html.erb文件。通常您是从创建操作重定向,但在这里您可以只呈现成功模板。

  2. 验证。如果您想保持 REST,您应该再添加一个步骤:GET 验证,带有您的令牌的表单在哪里,这将导致 PUTupdate操作。用户收到指向此页面的链接。

    但我更喜欢在这里使用简单的 GET 请求,它会更新信息而无需任何额外的点击。

  3. 与恢复密码和其他功能的方式相同。您将一个页面添加到接收电子邮件的表单中,然后发送一封带有链接的信函,该链接指向一个页面,表单中填充了令牌,依此类推。

于 2011-04-23T23:57:57.647 回答