我很难理解如何正确使用Compojure/Ring中的会话。Ring/Compojure中的会话
一些例子我也碰到过:
http://rjevans.net/post/2628238502/session-support-in-compojure-ring
https://github.com/ring-clojure/ring/wiki/Sessions
这些例子并不能帮助我了解如何会议整合到像一个登录机制。
(defroutes main-routes
(POST "/login" request (views/login request)))
;; views.clj
(defn login
[request]
(let [{params :params} request
{username :username} params
{password :password} params
{session :session} request]
(if (db/valid-user? username password)
(-> (logged-in request)
(assoc-in [:session :username] username))
(not-logged-in))))
我意识到,这是不正确的logged-in
回报打嗝/ html和我相信环响应图不加,直到之后的路线完全评估。这似乎是为什么上述所有示例都显示会话被添加到完整的响应地图。但是,Compojure的特点之一就是抽象出开发必须与响应图一起工作的要求。因此,我觉得我必须要失去一些东西。
正确的做法是什么?
compojure是一个路由库。它抽象了需要手动确定哪些代码应该处理请求,并且有一些方便的方法来从处理函数的请求中获取参数。它没有完全抽象出请求地图的所有用法。 – noisesmith 2014-09-30 16:55:15