Laravel

[Laravel8]Remember meが効かない=実装しないといけない

ログイン機能を実装していて、標準のRememberMe(記憶させておく)機能を使ってみたけれど、動いている様子はない。

動かない。

「Remember me」にチェックを入れても、効かない。

「Remember me」が動作しているかどうかの確認は、ChromeのデベロッパーでApplication→Cookiesのところに remember_web_xxxxが無いと
動作していない。

remember_web_xxxxがあると、「Remember me」が動作している。

ググっても出てこないので、Laravelのプロにお手伝いをして、手入れをしてもらった。

結局は、app/Http/Controllers/Auth/LoginController.php

protected function authenticated(Request $request, $user)
    {
        $params = $request->all();
        if (Auth::attempt(['email' => $params['email'], 'password' => $params['password']])) {
            if (isset($params['remember-me']) && $params['remember-me'] === 'on') {
                Auth::attempt(['email' => $params['email'], 'password' => $params['password']], true);
            } else {
                Auth::attempt(['email' => $params['email'], 'password' => $params['password']], false);
            }
        }
    }

これを追加したらOK!!!

しっかりと、remember_web_xxxxが出てくることを確認しました。

ちなみに、Auth::attemptの第2引数にtrueをしているので、5年間?は保持されるようなので、セキュリティー強化のために時間を変更するような実装が別途必要かもです。

そこまで実装された方はやり方教えて下さい(^^)

 

これを先頭に入れておくのもお忘れなく

use Illuminate\Support\Facades\Auth;

あと、$params['remember-me']の中身などはご自身の環境に合わせてくださいね!

ではでは~

-Laravel

© 2024 青い空とコーヒーと