4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

YesodAdvent Calendar 2016

Day 19

Yesodのセッションあれこれ

Posted at

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に格納するようにする」で紹介しているのでご覧下さい。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?