User Tools

Site Tools


lecture:ring:docs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lecture:ring:docs [2014/04/05 09:45]
psk810 [세션]
lecture:ring:docs [2019/02/04 14:26] (current)
Line 414: Line 414:
         (assoc :session session))))         (assoc :session session))))
 </​code>​ </​code>​
 +
 +세션을 전부 업애려면,​ 응답맵의 :session 키에 nil을 설정한다.
 +
 +<code clojure>
 +(defn handler [request]
 +  (-> (response "​Session deleted."​)
 +      (assoc :session nil)))
 +</​code>​
 +
 +브라우저에서 세션 쿠키가 존속되는 시간을 지정하려면,​ :​cookie-attrs 옵션을 사용하여 세션 쿠키의 속성을 변경할 수 있다.
 +
 +<code clojure>
 +(def app
 +  (wrap-session handler {:​cookie-attrs {:max-age 3600}}))
 +</​code>​
 +
 +위 코드의 경우 쿠키의 최대 존속 기간은 3600초, 즉 1시간이다.
 +
 +세션 쿠키가 HTTPS만 되도록 하려면 다음과 같이 한다.
 +
 +<code clojure>
 +(def app
 +  (wrap-session handler {:​cookie-attrs {:secure true}}))
 +</​code>​
 +
 +====== 세션 스토어 ======
 +
 +세션 데이타는 세션 스토어에 저장된다. Ring에는 2개의 스토어가 있다.
 +
 +  * ring.middleware.session.memory/​memory-store - 세션이 메모리에 저장된다.
 +  * ring.middleware.session.cookie/​cookie-store - 암호화된 세션이 쿠키에 저장된다.
 +
 +Ring은 기본적으로 세션 데이타를 메모리에 저장하지만,​ :store 옵션으로 변경될 수 있다.
 +
 +<code clojure>
 +(use '​ring.middleware.session.cookie)
 +
 +(def app
 +  (wrap-session handler {:store (cookie-store {:key "a 16-byte secret"​})})
 +</​code>​
 +
 +ring.middleware.session.store/​SessionStore 프로토콜을 구현하여 사용자 세션 스토어를 만들 수 있다.
 +
 +<code clojure>
 +(use '​ring.middleware.session.store)
 +
 +(deftype CustomStore []
 +  SessionStore
 +  (read-session [_ key]
 +    (read-data key))
 +  (write-session [_ key data]
 +    (let [key (or key (generate-new-random-key))]
 +      (save-data key data)
 +      key))
 +  (delete-session [_ key]
 +    (delete-data key)
 +    nil))
 +</​code>​
 +
 +
 ====== 파일 업로드 ====== ====== 파일 업로드 ======
 ====== 인터랙티브 개발 ====== ====== 인터랙티브 개발 ======
lecture/ring/docs.txt · Last modified: 2019/02/04 14:26 (external edit)