首页 > 解决方案 > Rails 防止 url 被更改

问题描述

我试图找出一种方法来防止某人更改部分 url。我已经设置了我的网站,因此没有人可以注册或创建帐户,因此访问的任何人都是访客。

例如,我在网站这部分设置了 url 来查找1afrom的值,/pathfinder/a/quest1/1a/q1sub1/以便显示q1sub1.

如果有人要更改 to 的值,1a1n想测试 url 是否已更改并给出某种错误消息。

不确定在这种情况下要分享哪些代码摘录,所以如果您需要更多信息,请告诉我。

我对任何想法持开放态度,并感谢任何意见。谢谢!

标签: ruby-on-railsrubyurl

解决方案


设计的 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


推荐阅读