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