ruby-on-rails - Rails 防止 url 被更改
问题描述
我试图找出一种方法来防止某人更改部分 url。我已经设置了我的网站,因此没有人可以注册或创建帐户,因此访问的任何人都是访客。
例如,我在网站这部分设置了 url 来查找1a
from的值,/pathfinder/a/quest1/1a/q1sub1/
以便显示q1sub1
.
如果有人要更改 to 的值,1a
我1n
想测试 url 是否已更改并给出某种错误消息。
不确定在这种情况下要分享哪些代码摘录,所以如果您需要更多信息,请告诉我。
我对任何想法持开放态度,并感谢任何意见。谢谢!
解决方案
设计的 URL 不能由您的应用程序控制。但是,如果您想跟踪用户以前的位置,那么在您有权访问的所有控制器中request.referrer
,应该告诉您请求来自哪里。您可以向控制器添加一些条件逻辑,并在request.referrer
您想要限制的情况下重定向用户。所以在你的控制器动作中是这样的:
def show # for example
if request.referrer != "http://example.com/myformpage"
redirect_to root_path, notice: "Invalid access"
else
# do stuff
end
end
然而,这仍然不安全,因为标题可以被欺骗(感谢@Holgar Just)。如果您真的想要应用程序的安全性,您应该阅读文档 ,并且如果您需要对用户权限进行更精细的控制,也许可以查看 CanCanCan gem
推荐阅读
- python-3.x - 为什么 sympy 在求解三次方程时会给出复根
- python - 如何在熊猫列中获取唯一的子字符串
- webpack-hmr - “热模块”与“HMR”完全相同是什么意思?
- javascript - 即使 jss 实例更新,React-jss 也不会更新
- reactjs - Reactjs 键的混淆
- javascript - 解析 JSON 时出现 Google Cloud Dataflow Javascript UDF 错误
- python - 使用 .join 函数从列表中加入 python 字符串不会输出想要的结果
- tableau-api - 如何在不通过桌面工具打开工作簿的情况下检查 Tableau Server 上正在使用的 R 函数?
- python - 如何使这个 JSON 结构按预期工作?
- dart - 如何从外部访问有状态小部件的属性/方法?