J'ai une application compojure qui utilise l'encapsuleur de session en anneau pour stocker le jeton OAuth associé à l'utilisateur actuel. Je souhaite que ce jeton reste disponible lorsque le serveur redémarre, de sorte que je n'ai pas à passer par le processus d'authentification à chaque fois. J'ai supposé que l'utilisation du cookie-store à la place du magasin de mémoire par défaut aiderait, mais ce n'est pas le cas. Qu'est-ce que je rate?Compojure/Ring: Pourquoi une session avec cookie-store ne survit-elle pas à un redémarrage du serveur?
Ceci est la partie pertinente du code:
(defn auth-callback-handler
[session {code :code}]
(let [token (retrieve-token code)]
(-> (redirect "/") (assoc :session (assoc session :token token)))))
(defroutes app-routes
(GET "/" {session :session} (root-handler session))
(GET "/auth-callback" {session :session params :params} (auth-callback-handler session params))
(route/not-found "Not Found"))
(def app
(-> (handler/site app-routes)
(wrap-session {:store (cookie-store {:key "a 16-byte secret"})})))
La fonction root-handler
utilise le jeton de décider si quelqu'un est connecté ou non, mais ne retourne rien de la façon de l'info de la session.