通过电子邮件验证设计用户

时间:2011-06-08 03:42:49

标签: ruby-on-rails email devise

我正在使用rails 3并设计。我想在以下工作流程中进行构建。

  1. 文章在网站上提交,需要管理员批准。
  2. 网站向该网站的管理员发送一封电子邮件,其中包含指向管理员可以审核的页面的链接,然后审核并批准该文章
  3. 我已实现此功能,但是,如果管理员当前未登录该站点,则管理员将退回到未经过身份验证的根路径。

    电子邮件中发送的链接是否可以作为特定管理员的身份验证?

3 个答案:

答案 0 :(得分:0)

您可以将其实现为自定义控制器操作。

您可以通过在:before_filter调用中添加:except => :custom_action密钥来关闭控制器中给定操作的设计身份验证。

您可以在包含article_id和admin_id的链接中包含查询字符串。然后在自定义控制器操作中,您将通过articles表中的额外字段检查此文章是否尚未经过审核。如果有,你可以保释。如果没有,那么您可以允许主持人批准或不批准它,将主持标志设置为true并感谢主持人的工作。

如果您想变得非常棘手,可以让URL包含一个MD5哈希的id,您可以将其用作键而不是文章ID。您可以将其存储在文章模型的额外字段中。这将使得在短暂的窗口期间,当它具有中等能力时,它不太可能被欺骗。

伊恩。

答案 1 :(得分:0)

您想要查看设计的令牌身份验证。这允许您使用一次性密钥通过URL参数授权用户访问。

在此处查看更多信息。 http://zyphmartin.com/blog/simple-auth-token-example-with-devise

此外,您只需为每个资源创建一个身份验证令牌,并将身份验证值存储在数据库中。当您转到资源ID和身份验证令牌中的资源传递的批准URL时。这比以管理员身份登录用户更安全。

如果您需要更多帮助,请与我们联系。

答案 2 :(得分:0)

您可以向控制器添加操作(您的URL指向的位置),然后将其添加到控制器中,将其从身份验证中排除:

before_filter :authenticate_user!, :except => [:review_article]

您可以在网址中包含某种键(例如,Ian建议的文章的MD5),并在review_article中查看。