首页 > 解决方案 > Rails:未登录用户对页面的访问受限

问题描述

我想限制没有帐户的用户访问某些页面(在一个控制器下)。例如:未登录的用户每天可以查看这些页面 10 次。如果超过此数字,他将自动重定向到通知他每日限制并鼓励他注册帐户的页面。

有什么宝石可以完成吗?(我用设计)

我最初的想法是为未登录的观众建立一个额外的 db-table 存储 IP 地址(使用request.remote_ip方法)。每次未登录的观众访问网站 rails 应用程序都会启动一个方法,检查他的 IP 是否在最后一天出现了 10 次或不。这是一个好的解决方案吗?

Rails 版本:5.2.1 设计版本:4.2

标签: ruby-on-railsrubydevise

解决方案


使用 IP 地址的问题在于,如果他们在共享 IP 上,您可以在同一个 IP 地址上拥有多个用户,因此这对于生产来说不是一个好的解决方案。相反,您可能应该使用https://github.com/cbeer/devise-guests gem。

这里的方法是您仍然可以为未登录的用户创建用户会话。


推荐阅读