您的位置:首页 > 编程语言 > PHP开发

laravel实现登录时监听事件,添加登录用户的记录方法

2019-09-30 10:30 1156 查看

一、执行,php artisan make:event AdminLoginEvent 命令,Laravel目录\app\Events会生成AdminLoginEvent.php文件,

二、我们先在\app\Providers目录下找到EventServiceProvider.php文件,该文件内有一个Events-Listeners数组来保存事件和监听者的映射关系:

protected $listen = [
'App\Events\AdminLoginEvent' => [
'App\Listeners\AdminLogListener',
],
];

三、执行,php artisan event:generate 命令,Laravel\app\Listeners目录下会生成AdminLogListener.php文件在文件里写一些业务:

<?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);
}
}

四、触发这个事件,在用户登录的地方:

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', '账户或密码错误');
}
}

这样就完成了整个用户登录的监听事件,当用户登录的时候表就会添加用户登录的信息。

以上这篇laravel实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息