Introducción a Rails

Seguridad

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.

Ventana de diálogo de autenticación HTTP básica