Apache rails beta网站访问解决方案

时间:2010-05-06 07:17:03

标签: ruby-on-rails apache2

我正在建立一个ror网站,并被要求对其进行临时访问限制。所需要的只是beta用户使用的一般访问限制。该站点使用乘客部署在apache服务器(在mac上)。我想知道有什么解决方案吗?

3 个答案:

答案 0 :(得分:4)

昨天我用Rails本身的简单解决方案回答了a similar question。我使用此解决方案来保护我的开发站点在测试时不被蜘蛛攻击。为方便起见,我在下面重新发布了它。


Rails有一个内置帮助器,您可以将它放在应用程序控制器中:

protected
  def authenticate
    authenticate_or_request_with_http_basic do |username, password|
      username == "admin" && password == "test"
    end
  end

然后在要保护的任何控制器上使用before_filter(或者只是将其粘贴在应用程序控制器中以阻止整个站点):

before_filter :authenticate

此方法适用于Nginx以及Apache,这是一个额外的好处。但是,如果您启用了完整页面缓存,则它不起作用 - 因为访问者永远不会访问Rails堆栈;它不会开始。

修改 刚刚注意到你指定了/ admin路由。我的所有管理员控制器都继承自AdminController。你可以这样设置你的:

/app/controllers/admin/admin_controller.rb

class Admin::AdminController < ApplicationController
  before_filter :authenticate
  protected
    def authenticate
      authenticate_or_request_with_http_basic do |username, password|
      username == "admin" && password == "test"
    end
  end
end

然后让所有控制器扩展管理控制器,例如:

class Admin::ThingsController < Admin::AdminController

我的路线设置如下:

map.namespace :admin do |admin|
    admin.resources :things
end

希望有所帮助。

答案 1 :(得分:0)

这是我第一次接受它,使用了很好的旧的htaccess解决方案,我发现很少有关于rails的信息。 为用户'beta'生成用户/密码文件:

mysite> htpasswd -c .htpasswd beta
mysite> chmod 755 .htpasswd

在rails public dir'public / .htaccess'中创建一个访问配置文件,其中包含:

AuthName "Enter password"
AuthType Basic
AuthUserFile /Users/myuser/projects/mysite/.htpasswd
require user beta

更改文件权限:

mysite> chmod 755 public/.htaccess

编辑apache conf文件(找出'apachectl -V | grep SERVER_CONFIG_FILE'的位置)。在VirtualHost配置部分中,添加以下内容以定义htaccess文件中的内容:

AllowOverride All

答案 2 :(得分:0)

Prefinery为您提供了针对此类情景http://www.prefinery.com/

的开箱即用解决方案