2010-05-06 39 views
2

我正在構建一個ror站點,並且要求對它進行臨時訪問限制。所有這一切都需要beta版用戶使用的一般訪問限制。該網站使用乘客部署在apache服務器上(在Mac上)。我想知道有什麼解決方案?Apache rails beta站點訪問解決方案

+0

屬於服務器故障 – Earlz 2010-05-06 14:25:49

回答

4

我回答a similar question到昨天在Rails中使用簡單的解決方案;我使用這個解決方案來保護我的開發網站在測試時不被蜘蛛攻擊。爲方便起見,我在下面轉貼了它。


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堆棧;它不會踢。

編輯 只是注意到你指定/管理路線。我所有的管理員控制器都從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 

希望有所幫助。

+0

謝謝,我想會有這樣的事情。我會考慮緩存並給它一個去... – par 2010-05-11 10:26:47

+0

我在構建時只是輕鬆地進行生產緩存,但如果您正在進行更嚴格的測試版測試,則可能會發現問題更多。祝你好運:D – robotmay 2010-05-11 10:28:05

0

這是我第一次使用它,使用良好的舊htaccess解決方案,我發現令人驚訝的關於軌道的信息很少。 生成用戶名/密碼文件,用戶測試「:

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

創建的軌道公共目錄 '公共/的.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')。在虛擬主機配置的部分,添加以下定義是用來在htaccess文件是什麼:

AllowOverride All