Laravelで「次回から自動でログイン」ってどうやるん?CookieとSessionの違いって?
2019/12/042017/05/30投稿のはてなブログから移行した内容です.
次回からログイン実装方法
今日のバイトは
「次回から自動でログイン」を実装してくれ
という内容だった
Laravelには Auth::attempt() というものがあるらしい.
第一引数に連想配列でメールアドレスやパスワードを渡すことで認証をしてくれるらしい.
そして、第二引数はtrue, falseの論理値を取る.
trueを与えることでログイン維持(Remember me)機能を有効にすることができ,
ユーザが自分でログアウトしない限り認証が持続するらしい.
しかし, 今回のシステムではこのメソッドは使われていませんでした.
僕はLaravelを勉強したわけでもなければ, プログラマー歴が長いわけではないので,
意図はわかりませんでした.
多分, 環境の問題(laravelのバージョン・PHPなどが古い)とかセキュリティ上の問題などがあったんだと思います。
今回のシステム
PostgreSQLにはハッシュ化されたパスワードが入っている
↓
ログイン画面からメールアドレスとパスワードが送られてくる
↓
メールアドレスの情報からユーザの情報を引っ張ってくる
↓
引っ張ってきた情報のハッシュ化されたパスワードとログイン画面から送られてきた文字列のパスワードを
Hash::check()で比較する
↓
DBから引っ張ってきた情報からパスワード情報を破棄してSessionにいれる
考えたこと
Sessionの長さを変えられんか?
→session.php内のlifetimeの値で変わる
→VerifyCsrfToken@addCookieToResponseで登録してるみたい
→でも僕がやりたことはこいつじゃ無理そう
※Sessionの有効期限はphp.ini gc_maxlifetimeで管理されているみたい
どうにかしてRemember me機能を使う
→無理でした
cookieに情報を残す
→先輩エンジニアさんもこれでいいのではとおっしゃってた
今回はcookieにid情報だけ残すことにしました.
別の先輩エンジニアさんが, cookieにid情報以外に,
他の偽情報を入れることでどの情報が正しい情報かわからなくする方法がある
とおっしゃっていたので, 適当に他の情報も作っておいた.
CookieとSessionの違い
先輩エンジニアさんがいろいろ話しているときに,
CookieとSessionって何が違うんだっけと思ったので調べた
(大学1年の時に調べたのに忘れてた...)
Cookie
keyとvalueをブラウザに保存
Session
keyをブラウザ、valueをサーバに保存
参考資料の一部
Laravel ユーザなら知っておくべきAuthオートログインのこと
Twitterフォロー待ってます!