Autenticación de usuarios con restful_authentication

Pasos para crear una aplicación rails con autenticación de usuarios.

Crear la aplicación rails:

$ rails myapp
$ cd myapp

Instalar el plugin restful_authentication:

$  script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/

Generar el sistema de autenticación:

$ script/generate authenticated user session
$ rake db:migrate

En config/routes.rb añadir lo siguiente antes de las rutas por defecto (las dos últimas)

map.resources :users
map.resource  :session, :controller => 'session'

map.signup '/signup', :controller => 'users', :action => 'new'
map.login  '/login', :controller => 'session', :action => 'new'
map.logout '/logout', :controller => 'session', :action => 'destroy'

En app/controllers/application_controller.rb poner la línea siguiente, que viene en los controladores user_controller.rb y session_controller.rb que ha creado el plugin.

include AuthenticatedSystem

Poniendolo en application_controller.rb hacemos que la autenticación esté disponible para todos los controladores.

Ahora en los controladores para los que queramos restringir el acceso a usuarios autenticados tendremos que poner un filtro:

before_filter :login_required

A este filtro le podemos poner parámetros para indicarle que sólo se aplique a algunas acciones o que se aplique a todas excepto a algunas, por ejemplo:

before_filter :login_required, :only => [:create, :destroy]
before_filter :login_required, :except => [:index, :show]

En mi caso últimamente es habitual que necesite controlar el acceso a toda la aplicación salvo a unas pocas acciones por lo que pongo el before_filter en application_controller.rb y luego pongo un skip_before_filter donde sea necesario, que en este caso es en users_controller.rb y session_controller.rb para permitir crear nuevos usuarios y hacer login, que en realidad es crear una nueva session. Por tanto en estos dos controladores pongo:

skip_before_filter :login_required, :only => [:new, :create]

Si además hay una portada de la aplicación pública también habrá que aplicarle esto.

Para hacer que el registro sea con activación de usuarios por email, ver este otro post.

Hierarchy: previous, next

Comments

There are 3 comments on this post. Post yours →

Hola, estoy usando el plugin Restful_authentication y en mi proyecto se produce la excepción ActionController::InvalidAuthenticityToken en el método 'create' del controlador 'Sessions', cuando en el momento de hacer login, borro todas las cookies ("limpiar información privada" en firefox) y a continuación le doy al submit.

¿Te ocurre también esto? Me gustaría saber si el error se debe a mi código o al plugin...

Un saludo.

Hola Sergio

Te acabo de contestar en la lista de ror-es con lo que yo creo que hace que te salte ese error. http://www.ruby-forum.com/topic/149029

saludos

Gracias por el link ;) Seguiré investigando.

Post a comment

Required fields in bold.






Markdown syntax enabled (no html). See the syntax rules for help.