当前位置: 首页 > 编程笔记 >

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

管翼
2023-03-14
本文向大家介绍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实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我对Laravel有点陌生,我已经设置了一个表用户,其中包含用户名和密码字段。 我的登录屏幕上有一个表单,其中正式声明了这些字段,我有一个函数是UserController: 我知道这是顺利的,因为如果我空白提交表单,我可以看到错误消息。 我已经删除了默认的用户认证。 当我提交时,我得到: 错误异常在EloquentUserProvider.php第114行:参数1传递给Illumate\Auth

  • 本文向大家介绍利用Laravel事件系统如何实现登录日志的记录详解,包括了利用Laravel事件系统如何实现登录日志的记录详解的使用技巧和注意事项,需要的朋友参考一下 本文介绍的是利用Laravel事件系统实现登录日志记录的相关内容,分享出来给大家参考,下面来看看详细的介绍: 明确需求 记录一个登录日志,通常需要下列信息: 客户端Agent信息 客户端IP地址 访问IP地点 登录时间 登录用户信息

  • 我几乎完成了我的一个项目(对我来说,我是一个初学者)。我想隐藏登录链接时,一个角色(管理员或用户)是登录到数据库。我还想显示一个名为“添加等级”的链接,仅当Admin(Manager)登录时。我正在使用spring boot、Tymeleaf、spring security5和h2&JDBC。 总之,我想隐藏或显示基于用户角色的HTML 更新:当我使用 匿名用户 这是我在navbar中包含或不包含

  • 接口说明 用户登录 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/login 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 username string form 是 用户名 password string form 是 密码 响应字段说明 参数 类型 说明 user St

  • 回顾 在上一章中,我们已经创建了数据库以及学会了使用它来存储用户以及 blog,但是我们并没有把它融入我们的应用程序中。在两章以前,我们已经看到如何创建表单并且留下了一个完全实现的登录表单。 在本章中我们将会建立 web 表单和数据库的联系,并且编写我们的登录系统。在本章结尾的时候,我们这个小型的应用程序将能够注册新用户并且能够登入和登出。 我们接下来讲述的正是我们上一章离开的地方,所以你可能要确

  • 伙计们!我不熟悉Laravel,正在使用以下技术进行项目工作:Laravel Framework 5.7。适用于Windows 7.2的15 XAMPP。1 PHP版本:7.2。1 Apache/2.4。29 MySQL:libmysql-mysqlnd5.0。12开发 一切正常:登录和注册。然后我想限制应用程序的注册。所以我找到了下面的解决方案StackOverflow上的问题:如何禁用注册新用