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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
php中的数组操作函数整理
Aug 18 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
php写的AES加密解密类分享
Jun 20 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
如何使用PHP给图片加水印
Oct 12 PHP
PHP基于array_unique实现二维数组去重
Jul 14 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
第十三节 对象串行化 [13]
2006/10/09 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python的mysqldb安装步骤详解
2017/08/14 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
Python列表与元组的异同详解
2019/07/02 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
预备党员思想汇报范文
2013/12/29 职场文书
园艺师求职信
2014/03/10 职场文书
品牌宣传方案
2014/03/21 职场文书
新学期标语
2014/06/30 职场文书
政风行风评议整改方案
2014/09/15 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
幼儿园教师自我评价
2015/03/04 职场文书