使用Rails + Devise for API时处理电子邮件的最佳方法是什么

时间:2015-10-26 16:11:47

标签: ruby-on-rails email devise

我有一个基于Rails的API,已经成功集成了Devise。我剩下的一个问题是如何处理电子邮件(确认和重置密码)。设计会自动发送这些带有其视图链接的电子邮件。由于API不应处理视图,处理此问题的最佳方法是什么?我的问题是:

  1. 由于Devise发送这些电子邮件,API是否不可避免地会包含一些html模板?有没有办法让这些模板在客户端?
  2. 如何处理包含确认令牌和reset_password_tokens等信息的链接?我不熟悉客户端技术,但链接是否指向客户端的域,以便它可以捕获,删除令牌并在后台进行调用?
  3. 谢谢。

1 个答案:

答案 0 :(得分:0)

我已经将Devise用于一些仅限API的Rails项目。坦率地说,恕我直言,设计对这些项目来说太沉重了。我设计,但有很多魔术和假设。其中一个假设是您将使用传统的Rails视图。这不是你问的问题,但是你可以查看其他一些身份验证库,比如https://github.com/thoughtbot/clearance

1)我没有看到您的客户端应用程序拥有电子邮件模板的方法。此操作完全发生在您的客户之外。 Rails正在发送电子邮件,然后您的用户可以使用他们的电子邮件客户端查看(我假设您的客户端应用程序实际上不是电子邮件客户端)。

我认为在这种情况下,Rails api是电子邮件模板的合适位置。我想不出你可以让你的客户端应用程序参与其中的方式。即使你可以,你为什么要这样做呢?

2)有几种方法可以处理密码重置的链接。正如您所说,您可以做的第一件事就是抓取数据并编写自己的视图。但这似乎是相当多的工作,你最终可能会与Devise斗争很多。

一个简单的解决方案就是让Devise拥有这些东西,并使用Rails视图。它很乱,但简单易行。设计是非常自以为是,这是阻力最小的路径。在我看来,你正试图在这里游泳,基于分离关注的原则。我认为使用Devise会很难做到这一点。

如果你真的必须让你的客户端应用程序呈现所有视图,包括此功能的视图,那么你可能会考虑只是滚动你自己的密码重置功能并保持Devise不在混合中。