Posted at

gem'devise'に頼りすぎていて、sessionとcookieの概念が疎かだったので、まとめる


はじめに

細かい事を気にしなくても、user機能一式導入できるdeviseに頼りすぎていましたが、仕組みがわからないのはまずいと思い、sessionとcookieとの違いを中心にログインとログアウトなどの仕組みを調べてまとめた備忘録。

*プログラミングを初めて3ヶ月の初学者なので、間違いがあるかも知れません。何かありましたらコメントで教えていただけると幸いです。


sessionとcookie


session

以下引用です。https://it-trend.jp/words/session


コンピュータネットワークでは、接続を確立してから切断するまでの一連の通信のこと。HTTPのサイトでは、セッションにIDを振ることで同一のセッションを管理することができる。また、一連のインタラクティブな操作(例えばログインしてからログアウトするまで)を指す場合もある。


HTTPリクエストはステートレスなプロトコルの為、何かしらでユーザーを区別しないと一連の動作が断片的な物になってしまい不便です。折角ログインしても、マイページに行こうとしたら、ログインした人とマイページに行こうとしている人が同じ人物かサーバー側で判断出来ない為マイページに行けなくなってしまうみたいな感じです。

それを解決するのがsessionです。この仕組みによりユーザーに対してユニークな値を付与する事でユーザーの判別を可能にしています。

ログインのロジックはこれを使って実装されています

session[:user_id] = user.id

このようにRailsではsessionと言うメソッドにuseridを持たせる事でログイン状態に、useridをdeleteする事で、ログアウト状態を作っています

*deviseでは複雑な形で導入されていて、私の実力では理解が及びませんでした。


cookie

ログインしたサイトを一度離れてまた閲覧してもログインしなくても出来るのはcookieが使われています。

cookieはPC側に保存され、該当のページへリクエストを送った時、一緒に送られて処理を行なっています。

deviseの初期画面のRemember meのチェックボックスがcookieを有効にするかを決めているみたいですね。


まとめ

自分的に理解は深まったが言語化が難しく、なんとも言えないまとめになってしまいました。

ログイン機能を一から作ったり、deviseを大々的に弄る様な機会がなかったのでおざなりになっていましたが、仕組みの大枠は理解できたかなと思います。


参照

「わかった」気になれるサイト。とりあえずわからない単語はここで一回調べると小難しい説明も入りやすくなるのでオススメです

https://wa3.i-3-i.info/word1791.html

https://time-space.kddi.com/ict-keywords/20180726/2392