在Rails 3应用程序中,如何允许匿名用户仅访问一次控制器操作?

时间:2011-10-07 05:45:05

标签: ruby-on-rails-3 session cookies controller anonymous-users

例如,假设我有一个博客,任何人都可以阅读文章,阅读评论,并将任何评论标记为不合适。如何防止未登录的用户多次单击“标记注释”链接?

“标记注释”链接将直接绑定到注释模型的控制器方法。

我对会话和cookie(以及一般的Rails)的想法不熟悉。我在Sessions看过这个,但我担心我还是有点困惑。

我考虑过创建一个名为Guest的Base类,但我想知道是否可以避免使用会话或cookie临时数据。

提前致谢。

1 个答案:

答案 0 :(得分:2)

基本想法可能如下(对不起,还没有代码):

  1. 定义哪些信息应存储在会话和/或cookie中。我认为对于每个标记的评论,它应该是id的{​​{1}}。将它们存储在类似哈希的结构中。
  2. 根据Cookie的内容建立comment的链接。这样的事情:

    flagging a comment
  3. 在标记注释时设置cookie哈希值(在这里使用局部变量... = link_to('flag comment', flag_comment_path(comment.id)) if ! cookies[:flagged_comments] || ! cookies[:flagged_comments][comment.id] ,必须在某处设置或知道):

    comment
  4. 我不知道代码是否有效,但这个想法应该清楚。是的,仅对匿名用户这样做(更依赖于UI和控制器功能)。

    还有一件事:我认为你不应该使用会话和cookie来存储这些信息。由于您必须注意到有人在2个不同的会话中标记评论,因此请仅使用Cookie。