我有一个使用ring会话包装器存储与当前用户关联的OAuth令牌的compojure应用程序。我希望在服务器重新启动时该令牌仍然可用,以便我不必每次都经过身份验证流程。
我认为使用cookie-store而不是默认的memory-store会有所帮助,但事实并非如此。我错过了什么吗?
这是代码的相关部分:
(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"})})))
root-handler
函数使用令牌来判断是否有人已登录,但不会返回任何会话信息。