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 相关文章推荐
实用函数10
Nov 08 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
一个PHP的String类代码
Apr 20 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
php实现文件下载代码分享
Aug 19 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
php 如何获取文件的后缀名
Jun 05 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 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
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
vue.js实现三级菜单效果
2019/10/19 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
Python实现时钟显示效果思路详解
2018/04/11 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
HTML5文档结构标签
2017/04/21 HTML / CSS
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
技术人员面试提纲
2013/11/28 职场文书
职工趣味运动会方案
2014/02/10 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
人力资源作业细则
2014/03/03 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
大学校园招聘会感想
2015/08/10 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
swagger如何返回map字段注释
2021/07/03 Java/Android
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS