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 相关文章推荐
PHP基础学习小结
Apr 17 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
php反射类ReflectionClass用法分析
May 12 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
PHP链表操作简单示例
2016/10/15 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
python实现自主查询实时天气
2018/06/22 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
中海讯通笔试题
2015/09/15 面试题
应届生护士求职信
2013/11/01 职场文书
农村改厕实施方案
2014/03/22 职场文书
保护黄河倡议书
2014/05/16 职场文书
法学专业求职信
2014/07/15 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
Python竟然能剪辑视频
2021/05/25 Python