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


Posted in PHP onSeptember 30, 2019

一、执行,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实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
php的curl实现get和post的代码
Aug 23 PHP
php select,radio和checkbox默认选择的实现方法
May 15 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
PHP简单选择排序算法实例
Jan 26 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
php7下的filesize函数
Sep 30 #PHP
laravel利用中间件防止未登录用户直接访问后台的方法
Sep 30 #PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 #PHP
Laravel框架表单验证操作实例分析
Sep 30 #PHP
Laravel 自带的Auth验证登录方法
Sep 30 #PHP
laravel 使用auth编写登录的方法
Sep 30 #PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 #PHP
You might like
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
接收键盘指令的脚本
2006/06/26 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
js计算精度问题小结
2013/04/22 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python实现批量下载图片的方法
2015/07/08 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
二年级小学生评语
2014/04/21 职场文书
爱护公物标语
2014/06/24 职场文书
志愿者个人总结
2015/03/03 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android