ruby-on-rails - 如何在不登录的情况下将 "Like"功能添加到我的博客文章中

标签 ruby-on-rails ruby session

假设我有一个博客和一些用 Rails 写的帖子。 有没有办法在我的博文中添加“赞”功能,这样用户就可以在不登录的情况下点赞我的文章? (没有用户登录!)

如果是,那么如何防止单个用户多次点赞一个帖子?

我教过如何使用 session 来识别过去的用户,但他们删除 session 是什么?

最佳答案

这是一个复杂的问题。正如您所说,您可以将此信息存储在 session 中(因此在 cookie 中),但这还不够。简单地清除 cookie 就可以解锁再次投票的可能性。所以,我的想法是存储我们可能得到的信息:

  • IP 地址
  • 用户代理
  • X-Forwarded-For(关于代理的信息)

所有其他内容都存在于 http header 中,例如:

  • 通过(有关代理的信息)
  • 接受语言
  • 接受字符集
  • 连接

然后将已投票的信息存储在 cookie 本地浏览器存储数据库中。

当没有cookie和本地浏览器存储的人想要投票时,尝试搜索IP和User-Agent。如果找到它,则表示此 session 可疑。但是您永远无法 100% 确定,相同的用户代理可能来自相同的 IP 地址(在 NAT 的情况下)。所以我建议不要放弃这样的投票,只是将其标记为可疑,以备将来使用。

关于ruby-on-rails - 如何在不登录的情况下将 "Like"功能添加到我的博客文章中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061707/

相关文章:

ruby-on-rails - 将表示逻辑放在 Controller 中是 Ruby 中的一个好习惯吗?

ruby - 用 Ruby 中的组名替换分组的正则表达式

ruby - 无法安装 selenium-webdriver

ruby - 数组插入和移位

session - 在经典 ASP 中保持 session 事件所需的最少代码是多少?

ruby-on-rails - 在 View / Controller 中显示路由

javascript - 谷歌地图自动完成设置后不工作

django - 在Django Session中修改字典不修改Session

asp.net - DevExpress 控件是否需要 ASP.NET session ?

ruby-on-rails - Heroku 找不到 SecureRandom