Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Rutas que crea Devise
  • Filtros y helpers de controlador
  • El modelo de usuario
  • Modificando las vistas
  1. Ruby on Rails I

Autenticación con Devise

PreviousFormulariosNextSass y Bootstrap

Last updated 2 years ago

es una gema que facilita la implementación de la autenticación en nuestras aplicaciones.

Los pasos para configurar son los siguientes:

  1. Agregar la gema al Gemfile:

    gem 'devise'
  2. Ejecuta bundle install para instalarla.

  3. Ejecuta el generador de :

    $ rails generate devise:install
  4. El siguiente paso es crear el modelo de o de los usuarios de la aplicación, generalmente User:

    $ rails generate devise User
  5. Ejecuta rails db:migrate para correr las migraciones.

Rutas que crea Devise

Asumiendo que el usuario es User, crea, entre otras, las siguientes rutas:

Ruta
Descripción

GET /users/sign_up

Formulario de registro

POST /users

Registrarse

GET /users/sign_in

Formulario de login

POST /users/sign_in

Login

DELETE /users/sign_out

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

Filtros y helpers de controlador

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

user_signed_in?

Retorna true si el usuario está autenticado, false de lo contrario

current_user

Retorna el usuario que está autenticado o nil

user_session

Retorna la sesión del usuario

El modelo de usuario

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

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

database_authenticatable

Los usuarios se van a poder autenticar con un nombre de usuario y contraseña almacenado en la base de datos.

registereable

Los usuarios van a poder registrarse, actualizar y eliminar su perfil.

recoverable

Los usuarios van a poder recuperar su contraseña

rememberable

Habilita la opción "Recordarme" en el login

trackable

Habilita el seguimiento al usuario (de dónde se autenticó, cuantas veces, de qué IP, etc.)

validatable

Valida el email y el password

Modificando las vistas

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' }

crea algunos métodos de ayuda y filtros para que puedas manejar la autenticación en tu aplicación.

Asumiendo que al usuario lo llamaste User al generarlo, el modelo que genera es el siguiente:

Por defecto no vas a ver vistas ni controladores de en tu aplicación. Sin embargo, si quieres modificarlos puedes decirle a que los genere.

De esta forma puedes modificar las vistas y cambiar funcionalidad de .

Devise
Devise
Devise
Devise
Devise
Devise
Devise
Devise
Devise