Compojure / Ring: Warum überlebt eine Sitzung mit Cookie-Store einen Serverneustart nicht?

Ich habe eine Compojure-App, die den Ringsitzungs-Wrapper verwendet, um das OAuth-Token zu speichern, das dem aktuellen Benutzer zugeordnet ist. Ich möchte, dass dieses Token verfügbar bleibt, wenn der Server neu gestartet wird, damit ich nicht jedes Mal den Authentifizierungsprozess durchlaufen muss.

Ich nahm an, dass die Verwendung des Cookie-Speichers anstelle des Standard-Speicher-Speichers hilfreich wäre, aber dies ist nicht der Fall. Was vermisse ich?

Dies ist der relevante Teil des Codes:

(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"})})))

Die Funktionroot-handler Verwendet das Token, um zu entscheiden, ob jemand angemeldet ist oder nicht, gibt jedoch keine Informationen zur Sitzung zurück.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage