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新手上路(四)
Oct 09 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
浅析php单例模式
Nov 25 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
PHP的imageTtfText()函数深入详解
Mar 03 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
漂亮但不安全的CTB
2006/10/09 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
PHP 读取和编写 XML
2014/11/19 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
vue中axios的二次封装实例讲解
2019/10/14 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
python实现中文输出的两种方法
2015/05/09 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
Python如何输出百分比
2020/07/31 Python
python实现单机五子棋
2020/08/28 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
信息技术课教学反思
2016/02/23 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
Python一行代码实现自动发邮件功能
2021/05/30 Python