Подтвердить что ты не робот

С использованием htaccess защиты паролем на рельсах?

Я хочу, чтобы маршрут /admin в моем приложении rails был защищен с использованием файлов пароля .htaccess - возможно ли это?

4b9b3361

Ответ 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

Надеюсь, что это поможет.