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
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
PHP学习 变量使用总结
Mar 24 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
php中session使用示例
Mar 29 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
php魔术变量用法实例详解
Nov 13 PHP
PHP session 会话处理函数
Jun 06 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
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php curl选项列表(超详细)
2013/07/01 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
总结Python常用的魔法方法
2021/05/25 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL