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调用三种数据库的方法(2)
Oct 09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
php 页面执行时间计算代码
Dec 04 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
PHP 编写大型网站问题集
May 07 PHP
PHP 图片上传代码
Sep 13 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
php实现商城购物车的思路和源码分析
Jul 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
php自动获取目录下的模板的代码
2010/08/08 PHP
解析php取整的几种方式
2013/06/25 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
js实现简单进度条效果
2020/03/25 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
python线程池的实现实例
2013/11/18 Python
python创建线程示例
2014/05/06 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
竞选部门副经理的自荐书范文
2014/02/11 职场文书
基石观后感
2015/06/12 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers