Buscar..


Introducción

Devise es una gema muy poderosa, te permite registrarte, iniciar sesión y cerrar sesión justo después de la instalación. Además el usuario puede agregar autenticaciones y restricciones a sus aplicaciones. Devise también viene con sus propios puntos de vista, si el usuario desea utilizar. Un usuario también puede personalizar los formularios de registro e inicio de sesión según sus necesidades y requisitos. Debe tenerse en cuenta que Devise recomienda que implementes tu propio inicio de sesión si eres nuevo en los rieles.

Observaciones

En el momento de generar configuraciones de dispositivos, los rails generate devise:install , el dispositivo mostrará una lista de instrucciones en la terminal a seguir.

Si ya tiene un modelo de USER , al ejecutar este comando, los rails generate devise USER agregará las columnas necesarias a su modelo de USER existente.

Utilice este método auxiliar before_action :authenticate_user! en la parte superior de su controlador para verificar si el user ha iniciado sesión o no. Si no, entonces serán redirigidos a la página de inicio de sesión.

Autenticación utilizando Devise

Añadir gema al Gemfile:

gem 'devise'

A continuación, ejecute el comando de bundle install .

Use el comando $ rails generate devise:install para generar el archivo de configuración requerido.

Configure las opciones de URL predeterminadas para la aplicación de correo de Devise en cada entorno En el entorno de desarrollo agregue esta línea:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

a su config/environments/development.rb

de manera similar en producción, este archivo de config/environments/production.rb edición y agrega

config.action_mailer.default_url_options = { host: 'your-site-url'}

Luego cree un modelo usando: $ rails generate devise USER Donde USER es el nombre de la clase para la que desea implementar la autenticación.

Finalmente, ejecute: rake db:migrate y ya está todo listo.

Vistas personalizadas

Si necesita configurar sus vistas, puede usar los rails generate devise:views que copiarán todas las vistas a su aplicación. A continuación, puede editarlos como desee.

Si tiene más de un modelo de Devise en su aplicación (por ejemplo, Usuario y Administrador), notará que Devise utiliza las mismas vistas para todos los modelos. Devise ofrece una manera fácil de personalizar las vistas. Establezca config.scoped_views = true dentro del archivo config/initializers/devise.rb .

También puede usar el generador para crear vistas con ámbito: los rails generate devise:views users

Si desea generar solo unos pocos conjuntos de vistas, como las del módulo registrable y confirmable, use el indicador -v: los rails generate devise:views -v registrations confirmations

Diseñar filtros de control y ayudantes

Para configurar un controlador con autenticación de usuario usando un dispositivo, agregue esto antes de la acción: (asumiendo que su modelo de dispositivo es 'Usuario'):

before_action :authenticate_user!

Para verificar si un usuario ha iniciado sesión, use la siguiente ayuda:

user_signed_in?

Para el usuario que inició sesión actualmente, use este ayudante:

current_user

Puede acceder a la sesión para este ámbito:

user_session

  • Tenga en cuenta que si su modelo de Devise se llama Member lugar de User , reemplace el user anterior por member

Omniauth

Primero elige tu estrategia de autenticación y Gemfile a tu Gemfile . Puede encontrar una lista de estrategias aquí: https://github.com/intridea/omniauth/wiki/List-of-Strategies

gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'

Puedes añadir esto a tu middleware de rieles así:

Rails.application.config.middleware.use OmniAuth::Builder do
  require 'openid/store/filesystem' 
  provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
  provider :openid, :store => OpenID::Store::Filesystem.new('/tmp')
end

De forma predeterminada, OmniAuth agregará el /auth/:provider a sus rutas y puede comenzar usando estas rutas.

De forma predeterminada, si hay un error, omniauth redireccionará a /auth/failure

has_secure_password

Crear modelo de usuario

rails generate model User email:string password_digest:string

Agregar el módulo has_secure_password al modelo de usuario

class User < ActiveRecord::Base
  has_secure_password
end

Ahora puedes crear un nuevo usuario con contraseña.

user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'

Verifique la contraseña con el método de autenticación

user.authenticate('somepassword')  

has_secure_token

Crear modelo de usuario

# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
  has_secure_token
  has_secure_token :auth_token
end

Ahora, cuando creas un nuevo usuario, un token y auth_token se generan automáticamente

user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"

Puedes actualizar los tokens usando regenerate_token y regenerate_auth_token

user.regenerate_token # => true
user.regenerate_auth_token # => true


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow