假设我有一个博客和一些用 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/