skillup

技術ブログ

プログラミング全般

ログインしたままにするの挙動に関して(ステートフル認証の基本的な仕組みの復習もかねて)

投稿日:2020年12月5日 更新日:

基礎の基礎ですが、ログイン処理に関しての動きに関して。

通常のログイン処理に関して

通常のログイン処理では、まず以下のような手続きを取ります。

  1. ログイン時にセッションにユーザーIDなどキーとなる情報を保存しておく。(保存する媒体自体はファイル、DB、キャッシュなど色々あります。)
  2. このセッションとして保存されているデータ自体を識別するキーをクッキーに保存。当たり前ですがブラウザのクッキーにこれが保存されており、フレームワークを使っておりますと、何らかのプレフィックスがついていることが多いです。
  3. 通常、一度ログインしますとページにアクセスするたびに、クッキーからセッションのキーを取得し、そのあとセッションにアクセスし、データを取り出すなどの処理を内部で行なっていることからログインが継続します。
  4. 永続的にデータが保存されるのは危険なため、最後の操作から一定期間でこのデータ自体が使用できなくなることが一般的です(30分〜2時間など)。ですので、ログインしたまま長い間放置していると「セッションが切れました。再度ログインしてください。」などのメッセージが出ます。

それ以外にも開発を行なっているときは当たり前ですが、保存されているセッションデータを直接削除すればログインできなくなります。

ログインしたままにする

これに対して、一般的なWebアプリなどではログインしたままにするというチェックボックスがあり、一度チェックをしてしまうと、ほぼログイン処理などはせずに自動的にログインできる機能が搭載されていることが一般的です。

この場合、上記のようなセッションにデータ保存、クッキーにセッションのキーを保存という処理以外にも、

クッキー自体にキーとなる情報(例えばユーザー名やIDなど)という情報を暗号化して保存しておき、セッションが切れ場合にはここから情報を復元して、DBなどに直接アクセスをする、という挙動をしているようです。

ですので、例え開発時にセッション情報を削除しても上記のような実装ですとログインが継続されています。(もちろんブラウザ自体のクッキーを削除してしまえば、ログインはできませんが・・・)

Laravel内のセッションの仕組みでわかりやすい記事があってのでリスペクトの意味も込めてリンクを。

ログインのRemember Me

 

-プログラミング全般
-

執筆者:


comment

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

関連記事

no image

Simple Factoryパターンについて

今回はデザインパターンの一種であるSimple Factoryパターンに関して。 Contents1 Simple Factoryパターンとは2 サンプルコード3 解説 Simple Factoryパ …

no image

DIが役に立つ場面はやはりテスト

システム開発において、密結合とか疎結合なんて言葉が使われたりします。 密結合・・システム間の構成要素の関連性が高く、結びつきが密なこと 疎結合・・システム間の構成要素の関連性が弱く、結びつきが疎なこと …

no image

抽象性と可読性のトレードオフに関して

私自身プログラムを書く場合、とにかくコードを書く量を制限したいという思いが強く、多少でも共通化できる箇所がある場合はなるべく共通化するようにしておりましたが、時と場合によっては過剰に共通化したことによ …

no image

ポート解放(CentOS7)

新サーバー構築をしていたときにwebサーバーとしてnginxを立てましたが、外部から接続ができません。 500エラーすら吐かれず、ログも残っていません。 こんな時はホスト自体にアクセスが届いていない可 …

no image

webの仕組み その2 リクエストとレスポンス

クライアント(ブラウザ)はサーバーとの接続を確立した後、各種リクエストを送信します。サーバーはそれにこたえテキストや画像などのリソースをクライアントに転送します(これがレスポンスです。) Firefo …

アーカイブ