[英]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.