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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
php多文件上传实现代码
Feb 20 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 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
星际RPG字典
2020/03/04 星际争霸
织梦模板标记简介
2007/03/11 PHP
Linux中为php配置伪静态
2014/12/17 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
python使用cookie库操保存cookie详解
2014/03/03 Python
python进阶教程之动态类型详解
2014/08/30 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
python中的for循环
2018/09/28 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
Python类的继承super相关原理解析
2020/10/22 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
工程造价管理专业大专生求职信
2013/10/06 职场文书
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
晚宴邀请函范文
2014/01/15 职场文书
材料会计岗位职责
2014/03/06 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
公司车辆管理制度
2015/08/04 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL