LaravelのAuth機能でログイン・ログアウト機能を実装し、
現在ログイン履歴として、ログインした時間とログインIDを
ログイン履歴テーブルへ保存したいと考えております。
DBに登録されることは確認できたのですが、
なぜかログインで2回同じ時間で登録されてしまいます。
また、ログアウトでも登録されてしまいます。
何か原因などお気づきでしたらご指摘をお願いしたいです。
手順としては以下のように行いました。
1.app/Providers/EventServiceProvider.php
にログイン成功時のイベントを登録しました。
php
1<?php 2 3namespace App\Providers; 4use Illuminate\Auth\Events\Registered; 5use Illuminate\Auth\Listeners\SendEmailVerificationNotification; 6use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; 7use Illuminate\Support\Facades\Event; 8 9class EventServiceProvider extends ServiceProvider 10{ 11 protected $listen = [ 12 // ログイン成功したら実行 13 'Illuminate\Auth\Events\Authenticated' => [ 14 'App\Listeners\LogAuthenticated', 15 ], 16 Registered::class => [ 17 SendEmailVerificationNotification::class, 18 ], 19 ]; 20 21 public function boot() 22 { 23 parent::boot(); 24 25 // 26 } 27} 28 29
2.イベント・リスナー を作成しました。
tarminal
1$ php artisan event:generate
3.作成したイベントリスナーにhandle()内に最終ログイン日時を保存するコードを追加しました。
app/providers/EventServiceProvider.php
php
1<?php 2 3namespace App\Listeners; 4use Illuminate\Auth\Events\Authenticated; 5use Illuminate\Contracts\Queue\ShouldQueue; 6use Illuminate\Queue\InteractsWithQueue; 7use App\Models\Login_history; 8 9class LogAuthenticated 10{ 11 12 public function __construct() 13 { 14 // 15 } 16 17 public function handle(Authenticated $event) 18 { 19 //ログオン記録DB登録 20 $model = new Login_history; 21 $model->user_id = \Auth::user()->user_id; 22 $model->login_at = date('Y-m-d H:i:s'); 23 $model->save(); 24 } 25}
以下の記事を参考に作成しました。
https://blog.capilano-fw.com/?p=1464
お気づきの点や、情報等ございましたらお手数をおかけしますが、
ご共有をよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。