Autenticación o login de usuarios en Ruby on Rails

Existe un plugin para Ruby on Rails llamado Acts As Authenticated que nos ahorra la siempre repetitiva tarea de la autenticación ( login ) de usuarios en RoR, crea el modelo para el usuario, el controlador y las vistas para realizar login, logout, comprobar si el usuario esta autenticado, etc ...

La instalación es simple, ejecutar los siguientes comandos desde la raíz de la aplicación rails:

  1. Descargar el código del repositorio subversion:
    script/plugin source http://svn.techno-weenie.net/projects/plugins

  2. Instalar el plugin
    script/plugin install acts_as_authenticated

  3. Generar el modelo User y el controlador Account
    script/generate authenticated user account

  4. Crear la tabla de usuarios en la base de datos
    rake migrate



Para configurarlo y empezarlo a usar tenemos que mover la linea que pone "include AuthenticatedSystem" de /app/controllers/account_controller.rb a /app/controllers/aplication.rb

Finalmente tenemos que decidir si queremos añadir autenticación a por defecto a todas las páginas y explicitar las páginas que queremos que sean públicas, o tener por defecto todas las páginas públicas y marcar las páginas que queremos autenticar una a una.

Para la primera opción tenemos que añadir la linea "before_filter :login_required" en /app/controllers/aplication.rb y la línea "skip_before_filter :login_required" en los controladores de las páginas que queremos que sean públicas.

Si por el contrario deseamos que todas las páginas sean por defecto públicas, debemos explicitar en las páginas que queremos autenticación añadiendo la línea "before_filter :login_required" en su controlador:

class MiPaginaProtegidaController < ApplicationController
before_filter :login_required
end


Si queremos autenticar solo algunas acciones dentro del controlador, podemos usar el parámetro "only" de la función "login_required". Por ejemplo si sólo queremos que se necesite autenticación en las acciones edit y update del controlador:

class MiPaginaProtegidaController < ApplicationController
before_filter :login_required, :only => [ :edit, :update ]
end


El único problema que le he encontrado a este plugin es que el formulario de login ( /app/views/account/login.rhtml) no funciona, debeis reemplazarlo por:


<%= start_form_tag %>
<p><label for="login">Login</label><br/>

<%= text_field_tag 'login' %></p>

<p><label for="password">Password</label><br/>
<%= password_field_tag 'password' %>
</p>

<!-- Uncomment this if you want this functionality
<p><label for="remember_me">Remember me:</label>
<%= check_box_tag 'remember_me' %></p>
-->

<p>
<%= submit_tag 'Log in' %></p>

<%= end_form_tag %>

Más información (en inglés): http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated

Etiquetas: , ,


Recommend Me


XING
View Sergio Espeja's profile on LinkedIn