[RUBY] Rendre le mode API Rails compatible avec l'authentification Cookie (session)

Résumer les changements lors du changement de méthode d'authentification de l'application (mode Vue.js + Rails API) dans une carrière de l'authentification par jeton à la session (cookie)

Pourquoi j'ai commencé ça

** En raison de la nécessité de se connecter de manière transparente à partir d'une application Web existante **

――Comment enregistrer de manière transparente un utilisateur qui s'est connecté sur un écran implémenté dans une application Web normale sur un écran créé par SPA

Cette fois, nous sommes passés à l'authentification de session avec priorité à la date de livraison

Ce qui était nécessaire pour l'authentification par cookie

Du côté serveur

config/application.rb

    # Only loads a smaller set of middleware suitable for API only apps.
    # Middleware like session, flash, cookies can be added back manually.
    # Skip views, helpers and assets when generating a new resource.
    config.api_only = false # <-Changer faux en vrai

Si vous voulez que la session stocke un cookie, vous pouvez le faire en définissant config.api_only = true et en chargeant l'usure intermédiaire requise, mais c'est tout.

En raison des restrictions ci-dessus, j'ai changé api_only en false. (Veuillez me dire s'il existe un bon moyen d'utiliser api_only = true et de concevoir: bow :)

application_controller.rb (contrôleur de base API)

class ApplicationController < ActionController::API
  include ActionController::Cookies #<-Ajoute ça

Ce paramètre était également nécessaire lors de la création en héritant de ActionController :: API.

Côté client

axios (bibliothèque ajax)

  axios.create({
    withCredentials: true,
    //...
  })

axios Il s'agit d'une fonction pour envoyer un cookie de domaine différent, mais si ce n'est pas activé, le cookie de session ne peut pas être utilisé.

Recommended Posts

Rendre le mode API Rails compatible avec l'authentification Cookie (session)
[Rails] Utiliser des cookies en mode API
Nuxt.js × Créer une application en mode API Rails