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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
php中curl使用指南
Feb 05 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
Yii2框架加载css和js文件的方法分析
May 25 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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 加密与解密的斗争
2009/04/17 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
Python性能优化技巧
2015/03/09 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
东方电视购物:东方CJ
2016/10/12 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
师德师风个人自我剖析材料
2014/09/27 职场文书
同学聚会感言一句话
2015/07/30 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript