Compojure/Ring에서 세션을 올바르게 사용하는 방법을 이해하는 데 어려움을 겪고 있습니다. 이러한 예는 나를 로그인 메커니즘 같은으로 세션을 통합하는 방법을 이해하는 데 도움이되지 않습니다Sessions in 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