2016-06-12 3 views
0

Я создаю прокси-сервер с несколькими средними товарными знаками, один из которых - «обертка». Я хотел бы иметь возможность динамически изменять атрибуты cookie (max-age), которые 'wrap-session' получает в соответствии с параметрами запроса. это создание прокси:Изменение атрибутов cookie в соответствии с параметрами запроса

(defn- make-server 
    [port service-spec auth-app backend-bouncer] 
    (let [backend (session-backend {}) 
     proxy-handler   (make-proxy-handler service-spec auth-app backend-bouncer) 
     bam-auth-handler  (buddy.auth.middleware/wrap-authentication proxy-handler backend) 
     wrap-session-handler (wrap-session bam-auth-handler {:cookie-name "myCookie" :cookie-attrs {:max-age 3600}})] 
    (jetty/run-jetty wrap-session-handler {:port (or port 3000)}))) 

, как я могу это сделать?

+1

Вы должны написать свой собственный (измененный) 'wrap-session' для этого. Скопируйте и отредактируйте: https://github.com/ring-clojure/ring/blob/master/ring-core/src/ring/middleware/session.clj – ClojureMostly

ответ

0

Видимо, не было никакого другого пути, кроме как переписать wrap-session и другое и скопировать приватный метод session-options в мой файл и назвал его local-session-option, это то, как я сделал это:

(defn- local-session-options 
    [options cookie-store] 
    {:store  (options :store cookie-store) 
    :cookie-name (options :cookie-name "ring-session") 
    :cookie-attrs (merge {:path "/" 
         :http-only true} 
         (options :cookie-attrs) 
         (if-let [root (options :root)] 
          {:path root}))}) 



(defn local-wrap-session 
    [handler] 
    (let [store (mem/memory-store)] 
    (fn [request] 
     (let [cookie-max_age (get-max-age request) ; add additional setting and calculation here 
       options (local-session-options {:cookie-name "name" :cookie-attrs {:max-age cookie-max_age}} store) 
       new-request (rms/session-request request options)] 
      (-> (handler new-request) 
       (rms/session-response new-request options)))))) 

 Смежные вопросы

  • Нет связанных вопросов^_^