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