ruby on rails - tutorial - Autenticación basada en token para las API JSON de Rails
ruby on rails 5 rest api (4)
Aquí hay un buen tutorial sobre la autenticación de API con devise_token_auth . Además, la página de github de devise_token_auth gem parece tener una muy buena documentación que debería ayudarlo a comenzar.
Si está buscando un buen tutorial para comprender los conceptos relacionados, aquí hay uno que explica detalladamente la creación de una API de Rails con autenticación basada en token (no utiliza devise_token_auth
, pero es útil para entender los conceptos).
También te recomiendo que eches un vistazo al JWT (JSON Web Token) que funciona muy bien con la API de Rails a gran escala. Aquí hay otro tutorial que explica cómo construir la API de Rails respaldada con JWT
Hago API en rieles. Para la autenticación normal usamos el dispositivo, pero en la API, cómo implementar el dispositivo para la autenticación.
gem ''devise_token_auth''
Alguien prefiere esta gema para la autenticación, pero no hay tutorial disponible para eso. ¿Cómo implementar la autenticación en rieles api?
En mi proyecto actual he implementado simple_token_authentication . Es bastante fácil de implementar y usar también.
Solo agregue lo siguiente a su Gemfile y ejecute bundle install
gem ''simple_token_authentication'', ''1.12.0''
El resto de los pasos se encuentran en su documentación y también son fáciles de seguir.
Lo mejor que puedes hacer es seguir los tutoriales de github que tienen más probabilidades de estar actualizados.
Primero debes seguir la parte de TLDR .
Tenga en cuenta que los desarrolladores de aplicaciones frontales deben conocer la especificación de uso .
Finalmente quieres ir a través de la documentación. Aquí hay algunas muestras que podrían ayudar:
Rutas
Rails.application.routes.draw do
# Stuff
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
devise_for :users
root to: "home#index"
# The API part
namespace :api, defaults: {format: :json} do
scope :v1 do
mount_devise_token_auth_for ''User'', at: ''auth'', skip: [:omniauth_callbacks]
resources :stuff, only: [:index, :show]
end
end
end
Un controlador :
module Api
class StuffsController < ApiController
before_action :authenticate_user!
...
end
end
Controlador API
class ApiController < ApplicationController
include DeviseTokenAuth::Concerns::SetUserByToken
end
Modelo de usuario
class User < ActiveRecord::Base
# Include default devise modules.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
end
Finalmente no olvides configurar la gema en el inicializador correspondiente.
Puedes agregar los atributos "authentication_token" a tu tabla y usar esta gema:
https://github.com/robertomiranda/has_secure_token
en application_controller:
def authenticate_user!
authenticate_user_from_token!
super
end
def authenticate_user_from_token!
User.find_by_authentication_token(user_token)
end
def user_token
request.headers[''X-AUTH-TOKEN''].presence || params[''auth_token''].presence
end