Buscar..


Introducción

Devise es una solución de autenticación para Rails. Antes de seguir adelante me gustaría agregar una nota rápida sobre la API. Por lo tanto, la API no maneja sesiones (es sin estado), lo que significa que proporciona una respuesta después de su solicitud, y luego no requiere más atención, lo que significa que no se requiere un estado anterior o futuro para que el sistema funcione, por lo tanto, cada vez que solicitemos al servidor necesitamos Pase los detalles de autenticación con todas las API y debe decirle a Devise que no almacene los detalles de autenticación.

Empezando

Así que primero crearemos rieles de proyecto y dispositivo de configuración.

crear una aplicación de rieles

rails new devise_example

ahora agregue el dispositivo a la lista de gemas

Puede encontrar un archivo llamado 'Gemfile' en la raíz del proyecto Rails

A continuación, ejecute bundle install

A continuación, necesita ejecutar el generador:

rails generate devise:install

Ahora en la consola puedes encontrar algunas instrucciones solo síguelo.

Generar modelo de dispositivo.

rails generate devise MODEL

A continuación, ejecute rake db:migrate

Para más detalles ir a: Devise Gem


Token de Autentificación

El token de autenticación se usa para autenticar a un usuario con un token único. Por lo tanto, antes de continuar con la lógica, primero debemos agregar el campo auth_token a un modelo de Devise

Por lo tanto,

rails g migration add_authentication_token_to_users

class AddAuthenticationTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :auth_token, :string, default: ""
    add_index :users, :auth_token, unique: true
  end
end

A continuación, ejecute rake db:migrate

Ahora estamos listos para realizar la autenticación usando auth_token

En app/controllers/application_controllers.rb

Primero esta linea a ella

respond_to :html, :json 

Esto ayudará a que la aplicación Rails responda con html y json.

Entonces

protect_from_forgery with: :null

cambiará esto :null ya que no estamos tratando con sesiones.

Ahora agregaremos el método de autenticación en application_controller.

Por lo tanto, de forma predeterminada, Devise usa el correo electrónico como campo único, también podemos usar campos personalizados, en este caso nos autenticaremos usando user_email y auth_token.

  before_filter do
    user_email = params[:user_email].presence
    user       = user_email && User.find_by_email(user_email)

    if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
      sign_in user, store: false
    end
  end

Nota: el código anterior se basa únicamente en su lógica, solo trato de explicar el ejemplo de trabajo

En la línea 6 del código anterior puede ver que he configurado store: false lo que evitará que se cree una sesión en cada solicitud, por lo tanto, logramos un estado sin estado.



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