【问题标题】:Apache rails beta site access solutionApache rails beta 站点访问解决方案
【发布时间】:2010-05-06 07:17:03
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails apache2


    【解决方案1】:

    我昨天用 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
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢,我想会有这样的东西。我会研究缓存并试一试...
    • 我刚刚在构建时关闭了缓存以用于生产,但如果您正在进行更严格的 beta 测试,我会发现这会带来更多问题。祝你好运:D
    【解决方案2】:

    Prefinery 为您提供针对此类场景的开箱即用解决方案http://www.prefinery.com/

    【讨论】:

      【解决方案3】:

      这是我的第一次尝试,使用了良好的旧 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        • 2012-07-07
        • 2011-08-11
        • 2023-04-10
        • 1970-01-01
        • 2014-08-28
        • 2016-12-06
        相关资源
        最近更新 更多