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 adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
基于empty函数的输出详解
Jun 17 PHP
解析php中反射的应用
Jun 18 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
Laravel 5 学习笔记
Mar 06 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
PHP编写简单的App接口
Aug 28 PHP
Yii 2.0如何使用页面缓存方法示例
May 23 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
一个程序下载的管理程序(二)
2006/10/09 PHP
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
redux.js详解及基本使用
2019/05/24 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
numpy基础教程之np.linalg
2019/02/12 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
Django 路由控制的实现
2019/07/17 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python 决策树算法的实现
2020/10/09 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
利用指针变量实现队列的入队操作
2012/04/07 面试题
创联软件面试题笔试题
2012/10/07 面试题
机电专业毕业生求职信
2013/10/27 职场文书