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实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- 利用Laravel事件系统如何实现登录日志的记录详解
- AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
- Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
- AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
- Android编程实现音量按钮添加监听事件的方法
- laravel5.2实现区分前后台用户登录的方法
- 事件处理程序实现的另一种方法:浏览器的事件监听机制实现“1事件对应n事件处理程序”(Javascript)
- Web应用中防止用户重复登录的简单实现方法 .
- 实现“记录用户登录时间和退出时间,同时记录用户IP,并且要记录用户IP对应的省和城市地址”
- Java GUI之事件监听与处理的匿名类实现方法
- Android开发监听事件的三种实现方法
- MVC4验证 用户登录特性 实现方法
- Silverlight学习笔记十八最简单的添加双击事件的实现方法
- Linux下清空用户登录记录和命令历史的方法分享
- 实现记录和查看用户的系统登录和退出历史和利用C#编写的网络聊天程序
- 多种方法实现JS动态添加事件
- asp.net利用cookie保存用户密码实现自动登录的方法
- Laravel实现用户注册和登录
- 银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能
- JS记录用户登录次数实现代码