Devise es una gema que facilita la implementación de la autenticación en nuestras aplicaciones.
Los pasos para configurar Devise son los siguientes:
Agregar la gema al Gemfile
:
gem 'devise'
Ejecuta bundle install
para instalarla.
Ejecuta el generador de Devise:
$ rails generate devise:install
El siguiente paso es crear el modelo de o de los usuarios de la aplicación, generalmente User
:
$ rails generate devise User
Ejecuta rails db:migrate
para correr las migraciones.
Asumiendo que el usuario es User
, Devise crea, entre otras, las siguientes rutas:
Ruta | Descripción |
| Formulario de registro |
| Registrarse |
| Formulario de login |
| Login |
| Salir |
Para ver el listado completo ejecuta rails routes
. Las demás rutas son, en su mayoría, para el manejo de contraseñas (recuperar, cambiar, etc).
Devise crea algunos métodos de ayuda y filtros para que puedas manejar la autenticación en tu aplicación.
Asumiendo que tu usuario se llama User
, el filtro que puedes agregar sobre los controladores que quieres proteger es el siguiente:
before_action :authenticate_user!
Los métodos de ayuda a los que vas a tener acceso en los controladores y vistas son los siguientes:
Método | Descripción |
| Retorna |
| Retorna el usuario que está autenticado o |
| Retorna la sesión del usuario |
Asumiendo que al usuario lo llamaste User
al generarlo, el modelo que genera Devise es el siguiente:
class User < ApplicationRecord# Include default devise modules. Others available are:# :confirmable, :lockable, :timeoutable and :omniauthabledevise :database_authenticatable, :registerable,:recoverable, :rememberable, :trackable, :validatableend
Este es un modelo normal pero utiliza el método devise
que recibe una serie de módulos que puedes activar o desactivar.
Los módulos que vienen activados son los siguientes:
Módulo | Descripción |
| Los usuarios se van a poder autenticar con un nombre de usuario y contraseña almacenado en la base de datos. |
| Los usuarios van a poder registrarse, actualizar y eliminar su perfil. |
| Los usuarios van a poder recuperar su contraseña |
| Habilita la opción "Recordarme" en el login |
| Habilita el seguimiento al usuario (de dónde se autenticó, cuantas veces, de qué IP, etc.) |
| Valida el email y el password |
Por defecto no vas a ver vistas ni controladores de Devise en tu aplicación. Sin embargo, si quieres modificarlos puedes decirle a Devise que los genere.
Para generar las vistas utiliza el siguiente comando:
$ rails generate devise:views
Para generar los controladores utiliza el siguiente comando:
$ rails generate devise:controllers users
Luego incorpora el controlador que quieras sobreescribir en config/routes.rb
de la siguiente manera:
devise_for :users, :controllers => { registrations: 'users/registrations' }
De esta forma puedes modificar las vistas y cambiar funcionalidad de Devise.