Я хочу, чтобы / администраторский маршрут на моем приложении для направляющих был защищен при помощи .htaccess файлов паролей - действительно ли это возможно?
В 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, оно не сработает.
Edit Только что заметил, что вы указали маршрут /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
Затем пусть все ваши контроллеры расширяют контроллер admin, например:
class Admin::ThingsController < Admin::AdminController
Мои маршруты настроены так:
map.namespace :admin do |admin|
admin.resources :things
end
Надеюсь, это поможет.