状態管理とは
HTTPはクライアントから要求があってそれをサーバが応答して終わりという非常に単純なプロトコルです。そのため一回一回別のクライアントからの要求だと認識してしまします。もしそのままwebサービスを使うとSNSなどでページを更新するたびにログインし直すなどをしなければいけません。そういったことを避けるために下記の3つの方法で状態を維持します。
- cookie
- ブラウザに保存される小さなテキスト情報
- セッション
- クッキー、キャッシュ、データベースなどに状態情報を保存する仕組み。
- フラッシュ
- 現在と次のリクエストでのみ維持できるセッション情報。
cookieとは
ユーザーのブラウザに情報を残し、それを参照することでユーザーを特定する。
rei
def cookie
@email = cookies[:email]
end
def cookie_rec
cookies[:email] = {value:params[:email],expires:3.months.from.now,http_only:true}
render("")
end
<%= form_tag(action:cookie_rec) do %>
<% end %>
cookieは
- value・・・どんな値をいれるか
- expires・・・クッキーの期限
はかならず入れる必要がある。expiresを設定しない場合、ブラウザを閉じたらすぐに消される。
cookieの永続化、暗号化
rei
cookies.permanent[:email] = @email
cookies.encrypted[:email] = @email
pemanentメソッドやencryptedメソッドで永続化、暗号化ができる。
セッションとは
セッションはデータの保存先を選ぶことができる。ただ基本はクッキーで保存する。保存先の設定が豊富なためcookiesを使うよりもsessionを使ったほうが色々便利。
rei
def session_show
@email = session[:email]
end
# これで@emailを表示するとセッションに保存されていた値が表示できる
def session_rec
session[:email] = params[:email]
end
<%= form_tag(action:session_rec) do %>
<% end %>
# これでセッションに保存できる。
フラッシュとは
フラッシュはセッションに入れるほどじゃないんだけど次のページで関連した情報を出したい時に使います。次のページまでのセッションだと考えていいです。〜が登録できましたなどに使います。