Si fueras a publicar tu blog en línea, cualquier persona podría agregar, editar y eliminar artículos o eliminar comentarios.
Rails provee un sistema muy simple de autenticación por HTTP que funcionaría muy bien en esta situación.
Necesitamos una forma de bloquear el acceso a ciertas acciones en el controlador
PostsController
si la persona no está autenticada, aquí podemos usar el método
de Rails http_basic_authenticate_with
, que permite acceso a la acción
solicitada si el método retorna true
.
Para usar el sistema de autenticación, lo especificamos en la parte inicial de
PostsController
, en este caso, queremos autenticar al usuario en cada una de
las acciones, excepto index
y show
, así lo escribimos:
class PostsController < ApplicationController
http_basic_authenticate_with :name => "dhh", :password => "secret", :except => [:index, :show]
def index
@posts = Post.all
# cortado por brevedad
También queremos limitar la eliminación de comentarios a los usuarios autenticados, así
que en CommentsController
escribimos:
class CommentsController < ApplicationController
http_basic_authenticate_with :name => "dhh", :password => "secret", :only => :destroy
def create
@post = Post.find(params[:post_id])
# cortado por brevedad
Ahora si intentas crear un nuevo artículo, vas a ser recibido con una ventana de diálogo de autenticación HTTP básica.