2016-06-12 11 views
0

私はいくつかのミドルウェアを持つプロキシサーバーを作成しています。そのうちの1つはリング 'ラップセッション'です。 「ラップセッション」が要求パラメータに従って取得するクッキー属性(max-age)を動的に変更したいと考えています。 これは、プロキシの作成です:リクエストパラメータに応じて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)))))) 
関連する問題