Ruby on Rails
Autenticar Api utilizando Devise
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.