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脚本的10个技巧(6)
Oct 09 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
PHP+ajax实现二级联动菜单功能示例
Aug 10 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
PHP实现考试倒计时功能代码
Apr 16 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生成二维码的两个方法和实例
2014/07/01 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
php实现URL加密解密的方法
2016/11/17 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
lib.utf.js
2007/08/21 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
tab栏切换原理
2017/03/22 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
python实现对一个完整url进行分割的方法
2015/04/29 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
保安自我鉴定范文
2013/12/08 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
单位收入证明范本
2015/06/18 职场文书
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers