Yesodではリクエストの境界を超えて保持したいデータをセッションに格納することが出来ます。
セッションのいろいろをご紹介します。
なお本家の解説はYesod Bookをご覧下さい。
セッションタイムアウト時間を変更する
Foundation.hsのmakeSessionBackend実装を変更すると、セッションタイムアウト時間を変更できます。
修正前)
Foundation.hs
makeSessionBackend _ = Just <$> defaultClientSessionBackend
120 -- timeout in minutes
"config/client_session_key.aes"
上記は120分になっています。
なお、値を 0 するとセッションが一瞬たりとも維持されなくなるので、事実上セッション管理がされなくなります。タイムアウトしなくなるわけでないのでご注意を。
セッション管理を行わないようにする
場合によってはYesodのセッション管理を使いたくない場合があると思います。
この場合、Foundation.hsのmakeSessionBackendでNothingを返すようにします。
修正前
Foundation.hs
makeSessionBackend _ = Just <$> defaultClientSessionBackend
120 -- timeout in minutes
"config/client_session_key.aes"
修正後
Foundation.hs
makeSessionBackend _ = pure Nothing
セッションをDBに格納する方法
デフォルトでは、セッション情報はファイルに格納されているようになっているので、ロードバランシングされている場合に困ることになります。
DBに格納する方法は拙作の記事「Yesodでセッション情報をDBに格納するようにする」で紹介しているのでご覧下さい。