系统需要由两种人访问。本地用户(在本地网络中使用)和公共用户(使用域名访问的用户)如何使我的铁路应用程序限制我的公共用户访问控制器的一些URL?
使用两个具有相同mysql数据库的轨道但不同的端口和端口只转发一个? 限制一些网址只限本地用户? 使用apache而不是mongrel? 但是如何?
答案 0 :(得分:1)
最安全的方法是创建程序的两个版本,每个版本只监听特定的端口和/或接口。但管理两个应用程序而不是一个应用程序可能成本太高。
我建议您检查请求对象,并确定可以使用哪些属性来区分“内部”和“外部”访问。
在您的控制器中使用“before_filter”来授予或拒绝访问。
答案 1 :(得分:1)
您可以通过以下几种方式执行此操作:
拥有一个PublicBaseController和一个LocalBaseController。两者都继承自ApplicationController
class LocalBaseController < ApplicationController
before_filter :local_only
protected
def local_only
return false unless request.local?
end
end
然后:
class AccountsController < LocalBaseController
def index
# will not execute unless it is local
end
end
关于how Rails decides if a request is local,这是一篇很好的写作,尽管有点陈旧。