专栏首页恩蓝脚本laravel实现登录时监听事件,添加登录用户的记录方法

laravel实现登录时监听事件,添加登录用户的记录方法

一、执行,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实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解Android 获取手机中微信聊天记录方法

    首先我们要知道,微信的聊天记录一般是不提供给我们获取的,所以一般情况下我们手机没root的话就拿不到了。就算是root后的手机,想要获取微信的EnMicroMs...

    砸漏
  • Android 保存文件路径方法

    可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来...

    砸漏
  • python删除指定列或多列单个或多个内容实例

    在python中进行数据处理,经常会遇到有些元素内容是不需要的。需要进行删除或者替换。本篇就详细探讨一下各种数据类型(series,dataframe)下的删除...

    砸漏
  • Python读取Excel文件并写入数据库

    <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: bre...

    Python之道
  • Python面试题之列表推导式

    [[0,0,0,0,0,],[0,1,2,3,4,],[0,2,4,6,8,],[0,3,6,9,12,]]

    Jetpropelledsnake21
  • LTE参数-PA/PB总结

    LTE系统中可以配置RS功率、PDSCH功率,以达到优化性能、降低干扰的目的:

    用户6184845
  • SpringBoot2.x基础篇:编写应用程序时常用的ApplicationEvents

    在SpringFramework编写过程中使用了大量的Event/Listener来做一些解耦的任务工作,当然在SpringBoot内同样也沿用了这一点,如果你...

    恒宇少年
  • [Python] 安装包的时候出错:VS14.0 link.exe failed with exit status 1158

    1、将C:\Program Files (x86)\Windows Kits\10\bin\x64 加入环境变量

    用户2353021
  • python selenium自动登录web浏览器

    https://addons.mozilla.org/zh-CN/firefox/ katalon(推荐)、selenium IDE

    以谁为师
  • 计算机网络基础知识

    计算机网络的知识与我们的生活息息相关,对于每一个开发者来说更是十分重要,深入理解它,将有助于我们在实际工作中迅速解决相关问题。本篇就计算机网络的基本知识进行概要...

    梧雨北辰

扫码关注云+社区

领取腾讯云代金券