Tengo una aplicación compuesta que usa el contenedor de la sesión del anillo para almacenar el token OAuth asociado con el usuario actual. Me gustaría que este token permanezca disponible cuando se reinicie el servidor, para que no tenga que pasar por el proceso de autenticación cada vez.Compojure/Ring: ¿Por qué una sesión con cookie-store no sobrevive a un reinicio del servidor?
Supuse que usar la cookie-store en lugar de la memoria-store predeterminada ayudaría, pero no es así. ¿Qué me estoy perdiendo?
Esta es la parte relevante del código:
(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 función root-handler
utiliza el token para decidir si alguien está conectado o no, pero no devuelve nada en el camino de la información de la sesión.