laravel實(shí)現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法
一、執(zhí)行,php artisan make:event AdminLoginEvent 命令,Laravel目錄\app\Events會生成AdminLoginEvent.php文件,
二、我們先在\app\Providers目錄下找到EventServiceProvider.php文件,該文件內(nèi)有一個Events-Listeners數(shù)組來保存事件和監(jiān)聽者的映射關(guān)系:
protected $listen = [
'App\Events\AdminLoginEvent' => [
'App\Listeners\AdminLogListener',
],
];
三、執(zhí)行,php artisan event:generate 命令,Laravel\app\Listeners目錄下會生成AdminLogListener.php文件在文件里寫一些業(yè)務(wù):
<?php
namespace App\Listeners;
use App\Business\AdminLogBiz;
use Illuminate\Contracts\Queue\ShouldQueue;
use Common;
class AdminLogListener implements ShouldQueue
{
private $adminLogBiz;
/**
* Create the event listener.
* UserLogListener constructor.
* @param AdminLogBiz $adminLogBiz
*/
public function __construct(AdminLogBiz $adminLogBiz)
{
$this->adminLogBiz = $adminLogBiz;
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle($event)
{
$admin = $event->admin;
$data = [];
$data['admin_id'] = $admin->id;
$data['admin_username'] = $admin->truename;
$data['remote_ip'] = Common::getClientIP();
$data['location'] = isset($ipInfo['city']) ? $ipInfo['city'] : '';
$userName = empty($admin->truename) ? $admin->mobile : $admin->truename;
$data['log_code'] = 'login';
$data['log_content'] = $userName . '用戶登陸';
$this->adminLogBiz->add($data);
}
}
四、觸發(fā)這個事件,在用戶登錄的地方:
use App\Events\AdminLoginEvent;
/**
* 登錄
*
* @param Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function signin(Request $request)
{
$username = $request->username;
$password = $request->password;
if (Auth::guard('admin')->attempt(array('username' => $username, 'password' => $password))) {
if (Auth::guard('admin')->user()->status) {
$this->logout($request);
return redirect('/admin/login')->with('error', '賬號已被鎖定');
} else {
event(new AdminLoginEvent(Auth::guard('admin')->user()));
return redirect('admin/index');
}
} else {
return redirect('admin/login')->with('error', '賬戶或密碼錯誤');
}
}
這樣就完成了整個用戶登錄的監(jiān)聽事件,當(dāng)用戶登錄的時候表就會添加用戶登錄的信息。
以上這篇laravel實(shí)現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP設(shè)計(jì)模式之裝飾器(裝飾者)模式(Decorator)入門與應(yīng)用詳解
這篇文章主要介紹了PHP設(shè)計(jì)模式之裝飾器(裝飾者)模式(Decorator),結(jié)合實(shí)例形式詳細(xì)分析了PHP裝飾者模式的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-12-12
解決laravel groupBy 對查詢結(jié)果進(jìn)行分組出現(xiàn)的問題
今天小編就為大家分享一篇解決laravel groupBy 對查詢結(jié)果進(jìn)行分組出現(xiàn)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
Thinkphp 框架配置操作之配置加載與讀取配置實(shí)例分析
這篇文章主要介紹了Thinkphp 框架配置操作之配置加載與讀取配置,結(jié)合實(shí)例形式分析了Thinkphp 框架配置操作中配置加載原理、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05
Yii框架獲取當(dāng)前controlle和action對應(yīng)id的方法
這篇文章主要介紹了Yii框架獲取當(dāng)前controlle和action對應(yīng)id的方法,可實(shí)現(xiàn)獲取當(dāng)前controlle或action對應(yīng)id的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
ThinkPhP+Apache+PHPstorm整合框架流程圖解
這篇文章主要介紹了ThinkPhP+Apache+PHPstorm整合框架流程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

