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

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

22
задан V_H 9 May 2010 в 23:56
поделиться

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

Затем пусть все ваши контроллеры расширяют контроллер admin, например:

class Admin::ThingsController < Admin::AdminController

Мои маршруты настроены так:

map.namespace :admin do |admin|
    admin.resources :things
end

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

55
ответ дан 29 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: