我是靠谱客的博主 知性白羊,最近开发中收集的这篇文章主要介绍laravel实现登录时监听事件,添加登录用户的记录方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、执行,php artisan make:event AdminLoginEvent 命令,Laravel目录appEvents会生成AdminLoginEvent.php文件,

二、我们先在appProviders目录下找到EventServiceProvider.php文件,该文件内有一个Events-Listeners数组来保存事件和监听者的映射关系:

protected $listen = [
  'AppEventsAdminLoginEvent' => [
    'AppListenersAdminLogListener',
  ],
];

三、执行,php artisan event:generate 命令,LaravelappListeners目录下会生成AdminLogListener.php文件在文件里写一些业务:

<?php

namespace AppListeners;

use AppBusinessAdminLogBiz;
use IlluminateContractsQueueShouldQueue;
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 AppEventsAdminLoginEvent;
/**
 * 登录
 *
 * @param Request $request
 * @return IlluminateHttpRedirectResponse|IlluminateRoutingRedirector
 */
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实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持靠谱客。

最后

以上就是知性白羊为你收集整理的laravel实现登录时监听事件,添加登录用户的记录方法的全部内容,希望文章能够帮你解决laravel实现登录时监听事件,添加登录用户的记录方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(129)

评论列表共有 0 条评论

立即
投稿
返回
顶部