Я пытаюсь получить доступ к базовым данным сеанса в кольцевом промежуточном программном обеспечении, чтобы, в моем случае, скопировать пользовательские данные в запрос для более легкого доступа.
(def app
(->
(handler/site app-routes)
(wrap-user-auth) ; <--- my middleware
(session/wrap-session {:store (cookie-store {:key "something super secret"})})))
Промежуточное ПО:
(defn wrap-user-auth [handler]
(fn [request]
(println request )
(let [user (get (request :session) :user nil)]
(let [response
(handler
(if-not (nil? user)
(assoc request :user user :is_authenticated? true)
(assoc request :user nil :is_authenticated? false)))]
response
))))
Данные сеанса всегда пусты при печати запроса, даже если они были установлены и доступны через представления. Я пытался возиться с порядком промежуточного программного обеспечения, но не могу понять, почему атом пуст.
Какой-то случайный маршрут, по которому доступны данные сеанса
(ANY "/foo" request (println (request :session)))