9.1. Autenticación básica
Si publicaras ahora tu aplicación Rails, cualquier persona podría añadir, editar y borrar artículos y comentarios. Obviamente Rails incluye algunas opciones de seguridad para evitar esto. Una de ellas es la autenticación basada en HTTP.
La clave consiste en proteger el acceso a varias de las acciones definidas en
el controlador ArticlesController
. Si el usuario no está autenticado, no
podrá acceder a esas acciones. Para ello utilizaremos el método
http_basic_authenticate_with
de Rails.
La configuración de la autenticación en este caso consiste en indicar al
principio del controlador ArticlesController
que quereos proteger todas las
acciones salvao index
y show
:
class ArticlesController < ApplicationController
http_basic_authenticate_with name: "dhh", password: "secret", except: [:index, :show]
def index
@articles = Article.all
end
# ...
Otra restricción adicional consiste en evitar que los usuarios puedan borrar
comentarios. Para ello, añade lo siguiente en CommentsController
(archivo
app/controllers/comments_controller.rb
):
class CommentsController < ApplicationController
http_basic_authenticate_with name: "dhh", password: "secret", only: :destroy
def create
@article = Article.find(params[:article_id])
...
end
# ...
Si ahora tratas de crear un nuevo artículo, verás la siguiente ventana en la que el navegador te solicita un usuario y contraseña.
Las aplicaciones Rails pueden utilizar obviamente otros métodos de autenticación alternativos. Dos de las alternativas más populares se llaman Devise y Authlogic.
9.2. Otros comentarios sobre la seguridad
La seguridad, sobre todo cuando habamos de aplicaciones web, es un tema muy complejo. Por eso puedes consultar la guía Ruby on Rails Security Guide para obtener más información al respecto.