ブラウザにおける情報の一時記憶
「昨日ログインしたサービスを今日も利用しようとしたら、自動的にログインの状態になっていた」
という経験があるかと思います。
TwitterやこのQiitaもその機能が搭載されている
その都度ログインを行わなくて良いので便利
この機能が実現できるのは、セッション
とクッキー
という仕組みのおかげ
Webアプリケーションの使い勝手が良くなるため多くのサービスで使用されている
ゴリゴリのSPが出入り口にいて色々手続きをしないと入場できない施設が常連になると顔パスで素通り出来る様になる感じ?
セッションとは
Webサービスにおいて情報を一時的にDBに記憶
しておく仕組み
ショッピングサイトにログインしていると「お買い物カゴ」などに商品を追加でき、その状態を維持できるようになっている
ユーザーの情報やお買い物カゴの情報を一時的に保存し、初回のログイン以降も保持することで、一度ショッピングサイトのページを離れても、再度アクセスした時にログインの状態やお買い物カゴの情報を維持したままショッピングが再開できる仕組みが実装されている
この仕組みにより、何度もログインする必要がなくなる
session
Ruby on Railsでセッションを使用する際に使うオブジェクト
コントローラーで使用することが出来る
class ◯◯sController < ApplicationController
def index
session[:sample] = 1
end
end
- sessionというハッシュに値を追加するような記述で使用
- ユーザー情報を保持したい場合などに用いると便利
- deviseというGemで実装すると自動でセッションを利用できる
- 内部の処理でセッションを利用してログイン機能を実現しています。
クッキーとは
ブラウザが持っている、データを保存できる領域
のこと
ブラウザにあるセッションの情報の保存場所のことをクッキー
Webサービスにおいて情報を一時的にブラウザに記憶
しておく仕組み
「Google Chrome」にも導入されている
Ruby on Railsにも、セッションの保存先がある
CookieStore
- Ruby on Railsでセッションを用いる際の、デフォルトの保存先
-
セッションストレージ
と呼ぶことが一般的
セッションはCookieStoreにハッシュ形式で保存される
session[:sample]という記述は、
class ◯◯sController < ApplicationController
def index
session[:sample] = 1
end
end
ハッシュと同じ記法でしたが、これがその理由です。
セッションは悪意のあるユーザーが利用すると非常に厄介な項目
ユーザー情報をセッションを用いて一時的に保存していたら、その情報が盗まれて悪用されてしまう可能性がある
そうならないために、CookieStoreはセッションの情報を暗号化したり、また定期的にリセットしたりすることで対策を行っている