簡體   English   中英

將用戶登錄詳細信息存儲到Laravel中的DB

[英]Store user login details to DB in Laravel

我使用php artisan make:auth等在Laravel 5.5中設置了身份php artisan make:auth ,但現在我遇到了問題。

我有一個名為user_actions的數據庫表,其中存儲了用戶在我的應用程序中執行的操作(例如,他們打開了哪些頁面,他們在搜索中使用了哪些過濾器,這樣的東西)。 我想在這個表中添加登錄,但我不能為我的生活弄清楚如何。

LoginController只包含構造函數和redirectTo變量。 use AuthenticatesUsers但是在項目中搜索AuthenticatesUsers除了登錄控制器文件中的兩個提及之外沒有任何結果。

AuthServiceProvider只具有用於注冊策略的引導方法。

Register控制器中有create方法為用戶創建數據庫條目,但在Login我不確定發生了什么。

那么在哪里可以添加我的調用來將登錄操作存儲到數據庫中? 我必須聽一個活動嗎?

將經過身份驗證的方法添加到登錄控制器,在身份驗證過程之后立即調用此方法

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Foundation\Auth\AuthenticatesUsers;


class LoginController extends Controller  
{
    use AuthenticatesUsers;

    /**
      * @param Request $request
      * @param Authenticatable $user
      * @return \Illuminate\Http\RedirectResponse
    */
    protected function authenticated(Request $request, Authenticatable $user)
    {
        /* Your db inserts */
        return redirect()->intended($this->redirectTo);
    }
}

如果您還想捕獲登錄嘗試和/或登錄失敗,您可以覆蓋登錄功能,因為只有在成功登錄后才會調用身份驗證

您可以覆蓋默認登錄功能

 use AuthenticatesAndRegistersUsers {
        login as protected userLogin;
    }
    public function login(Request $request) {
    //you db logic
    return $this->userLogin();
    }

你可以在vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Auth找到它的所有登錄邏輯

或者你傷心地使用事件監聽器

<?php

namespace App\Listeners;

class UserEventSubscriber
{
    /**
     * Handle user login events.
     */
    public function onUserLogin($event) {
        //log data in db
     }

    /**
     * Handle user logout events.
     */
    public function onUserLogout($event) {
      //log data in db
     }

    /**
     * Register the listeners for the subscriber.
     *
     * @param  Illuminate\Events\Dispatcher  $events
     */
    public function subscribe($events)
    {
        $events->listen(
            'Illuminate\Auth\Events\Login',
            'App\Listeners\UserEventSubscriber@onUserLogin'
        );

        $events->listen(
            'Illuminate\Auth\Events\Logout',
            'App\Listeners\UserEventSubscriber@onUserLogout'
        );
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM