[Play] Playframeworkのセッションでハマる!

表題の時点で分かる人は大体「あー、あれだな!」って気づかれてしまうネタですけど、
拡散の意味を含めて投稿しておきます。

セッションに値を設定する時にwithSessionを使いますよね。
んで、新規セッションとする場合にはwithNewSessionを使う。

コードだとこんな感じ

Ok(・・・).withSession("authKey" -> "eyewhale")
Ok(・・・).withNewSession

そもそもこのメソッド名が混乱の元なんですよね。
一方がNewSessionならもう一方は既存のセッションを引き継ぐって思ってしまうんですが、これが間違い!
withSessionは指定された内容で既存セッションを丸ごと上書きします!!(重要)
(with・・・なのでそうあるべきなのは分かりますが)

なのでセッションに追加したい場合には

Ok(・・・).withSession(session + ("authKey" -> "eyewhale"))

のように記述する必要があります。
複数の値をセットする場合にはこんな感じ。

Ok(・・・).withSession(
      session + ("authKey" -> "eyewhale") + ("authorName" -> "tateo"))

逆にセッションから値を消す場合にはマイナスすれば消えてくれます。

Ok(・・・).withSession(session - "authKey")

という事で、
気をつけなはれや!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です