reset_session
Ruby on Rails Security Guide では Session Fixation - Countermeasures の項目で紹介されています。
調べながら気になった記事
またセッション ID はログイン後に reset_session でリセットすることが望ましいそうです。
認証後にリセットする方法のサンプル
そもそも認証が最初の画面なのであれば(ログイン画面が最初とか) SessionController#create
の before で reset_session
してしまっても良いと思います。
ただ、認証前の画面があった上で、途中から認証するような場合(認証前から買い物カートには追加できて、支払い前にログインを求めるような時)には、既にセッションに入っている情報を引き継ぐ必要があります。
リンク先そのままで恐縮ですが、以下のように一度複製して、リセットをするという方法になりそうです。
# 認証成功後
temp_sess = session.dup
reset_session
session.replace(temp_sess)