La autenticación de usuarios es una característica de seguridad esencial para las aplicaciones web, especialmente aquellas que manejan datos confidenciales de los usuarios o brindan acceso restringido a ciertas funciones. Al solicitar a los usuarios que se autentiquen antes de acceder a la aplicación, los desarrolladores pueden asegurarse de que solo los usuarios autorizados puedan ver o modificar los datos y la funcionalidad de la aplicación.
Devise es una gema de Ruby que proporciona funciones de autenticación y autorización de usuarios para aplicaciones Rails. Reduce el proceso de agregar funciones de registro, inicio de sesión y cierre de sesión a su aplicación sin tener que escribir todo desde cero.
Tiene funciones integradas como restablecimiento de contraseña y confirmación de cuenta. Admite varias estrategias de autenticación, como correo electrónico y contraseña, OAuth, OpenID y más.
Devise tiene documentación detallada que cubre funciones básicas y avanzadas.
En este tutorial, crearemos una aplicación Rails simple con Devise que permite a los usuarios crear cuentas, iniciar sesión y cerrar sesión en sus cuentas. También cubriremos cómo agregar estilo a la aplicación usando Bootstrap.
Antes de comenzar este tutorial, debe tener una buena comprensión de los conceptos básicos de Ruby y Rails. Además, debe tener el siguiente software instalado en su computadora:
También cubriremos cómo usar Bootstrap en Rails 7 más adelante en el tutorial.
rails new authApp
Esto generará una nueva aplicación Rails llamada authApp
en un directorio authApp
. Abra este directorio en su editor de texto preferido.
cd authApp
rails server
Genere un nuevo controlador que manejará la solicitud a la ruta raíz usando el comando: $rails generate controller home index
Esto crea un nuevo controlador llamado `Home` con una acción `index`.
Agregue la ruta raíz al archivo routes.rb
en la carpeta 'config' agregando la siguiente línea: root 'home#index'
En el directorio app/views/home
, encontrará un nuevo archivo llamado index.html.erb
. Esta vista contendrá el código HTML de su página de destino.
Reinicie el servidor y verifique el host local en su navegador web para ver su página de destino recién creada.
cat config/importmap.rb
. Si no lo hace, ejecute rails importmap:install
$ bin/importmap pin bootstrap
. Esto agrega JS, bootstrap y popperjs a config/importmap.rb
.app/javascript/application.js
usando import 'bootstrap';
.gem 'bootstrap', '~> 5.1.3'
a su Gemfile y ejecute bundle install
.app/assets/stylesheets/application.css
, importa Bootstrap usando @import "bootstrap";
y cambie el nombre del archivo a application.scss
.app/views/layouts/application.html.erb
contenga: <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> <%= javascript_importmap_tags %>
app/views/home/index.html.rb
.
Navegue hasta Gemfile y agregue la gema Devise usando el comando:
gem 'devise', github: 'heartcombo/devise', branch: 'main'
Ejecute bundle install
para instalar Devise.
Ejecute rails g devise:install
para configurar Devise en su proyecto. Esto genera varios archivos de inicio para Devise y proporciona instrucciones en la terminal.
Quite el comentario de la línea config.navigational_formats = ['*/*', :html, :turbo_stream]
en el archivo devise.rb
. Esto agrega turbo_stream como un formato de navegación, que es necesario para que Devise 4.9.2 funcione con Rails 7. De lo contrario, se generará un error undefined method user_url
.
Abra app/layouts/applications.html.erb
y agregue las siguientes líneas para avisos y mensajes de alerta:
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
Para crear un modelo de usuario con Devise, ejecute rails g devise user
en la terminal. Esto generará los archivos necesarios y la configuración necesaria para implementar la autenticación de usuario.
Cree la tabla de usuarios ejecutando el comando de migración: rails db:migrate
.
Reinicie el servidor para cargar el nuevo archivo de inicialización de Devise y configure todo para que funcione la autenticación de usuario.
Vaya a http://localhost:3000/users/sign_up
en su navegador para acceder al formulario de registro para crear una cuenta ingresando un correo electrónico y una contraseña.
Navegue hasta el archivo index.html.erb
y agregue las siguientes líneas de código:
<% if user_signed_in? %> <p>Welcome, <%= current_user.email %>!</p> <%= link_to "Sign out", destroy_user_session_path, method: :delete %> <% else %> <%= link_to "Sign in", new_user_session_path %> <% end %>
Estas líneas crean enlaces de registro, inicio de sesión y cierre de sesión para su aplicación. user_signed_in
es un método auxiliar proporcionado por Devise que devuelve verdadero si el usuario actual ha iniciado sesión y falso en caso contrario.
Para revisar los cambios, simplemente actualice la página en su navegador. Si aún no ha iniciado sesión, habrá un botón de inicio de sesión visible en la pantalla. Haga clic en él y complete el proceso de registro. Una vez que se haya registrado con éxito, se le dirigirá a la página de destino donde podrá ver la dirección de correo electrónico del usuario que ha iniciado sesión actualmente, un mensaje de bienvenida y un botón de cierre de sesión.
Al seguir estos pasos, ha integrado con éxito la gema Devise y ha configurado la autenticación de usuario para su aplicación.
En este tutorial, usamos Devise para agregar autenticación de usuario a nuestra aplicación Rails. Desarrollamos una aplicación donde los usuarios pueden crear cuentas, registrarse y cerrar sesión. También integramos Bootstrap para mejorar la apariencia del proyecto. Para ampliar su conocimiento de Devise y explorar más ayudantes y métodos, consulte el archivo README en el repositorio de Devise GitHub.