Ho un'app che utilizza il wrapper della sessione circolare per archiviare il token OAuth associato all'utente corrente. Vorrei che questo token rimanesse disponibile al riavvio del server, in modo che non debba passare attraverso il processo di autenticazione ogni volta.Compojure/Ring: Perché una sessione con cookie-store non sopravvive al riavvio del server?
Supponevo che l'utilizzo del cookie-store al posto dell'archivio di memoria predefinito sarebbe stato d'aiuto, ma non lo è. Cosa mi manca?
Questa è la parte rilevante del codice:
(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 funzione root-handler
utilizza il token per decidere se qualcuno è loggato o meno, ma non restituisce nulla in termini di informazioni di sessione.