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 controladorArticlesController
. 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 controladorArticlesController
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.
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.