我是网络和Rails的新手,我发现将这样的东西放在控制器的开头是一种常见的用法:
String url = "http://127.0.0.1:8983/solr/collection1; is ok!!!
HttpSolrServer solrServer = new HttpSolrServer(url);
solrServer.ping();
,其中
before_action :authenticate_admin, only: [:only_admin]
考虑到是否有可能以某种方式忽略来自客户端的这种重定向,我觉得真的不安全。 def authenticate_admin
unless current_user.admin?
flash[:alert] = "You are not admin!"
redirect_to '/'
end
end
如何实施?为什么这种用法可以确保安全?
答案 0 :(得分:0)
redirect_to
将 - 终止您当前的HTTP请求并要求客户端发起对/
的新调用,该调用应该是公共页面。您可以在任何地方重定向。
换句话说,它是HTTP重定向。
代码首先检查用户是否是管理员。如果没有,它会“警告”该消息并将客户端重定向到/
。
如果您询问是否可以通过删除此调用来忽略服务器上的此重定向,则不应忽略重定向,否则您只需检查用户是否为管理员但未采取任何操作。实际上,代码有义务让客户转到/
。假设该URL可以安全地用于非管理员,这是安全的。
如果您询问客户端(浏览器)是否能够忽略重定向 - 客户端无法忽略此重定向; rails将终止连接并发出HTTP重定向,浏览器无法忽略该重定向,因为它位于HTTP级别。
考虑重新定义你的问题更准确