2010-05-09 10 views

Respuesta

54

Carriles ha incorporado un ayudante para esto, se podía colocar esto en tu controlador de aplicación:

protected 
    def authenticate 
    authenticate_or_request_with_http_basic do |username, password| 
     username == "admin" && password == "test" 
    end 
    end 

luego usar un before_filter en cualquier controlador de que desea proteger (o simplemente pegarlo en el controlador de aplicación para bloquear todo el sitio):

before_filter :authenticate 

Este método funciona en Nginx, así como Apache, que es una ventaja añadida. Sin embargo, no funciona si tiene habilitado el caché de página completa, ya que el visitante nunca llega a la pila de Rails; no entrará en acción.

Editar Acaba de darse cuenta de que ha especificado la ruta/admin. Todos mis controladores de administración heredan de un AdminController. Usted puede configurar el suyo para arriba, así:

/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 

Luego tienen todos los controladores extienden el controlador de administración, por ejemplo:

class Admin::ThingsController < Admin::AdminController 

Mis rutas se configuran así:

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

Espero que ayude.

+3

awesome .. +1 para una explicación ordenada y limpia ... –

+0

Esto es exactamente lo que estaba buscando. ¡Gracias! –

+0

¡Muy buena explicación! – blackbiron

Cuestiones relacionadas