主頁 > 知識庫 > laravel實現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法

laravel實現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法

熱門標簽:Linux服務器 銀行業(yè)務 團購網(wǎng)站 阿里云 電子圍欄 科大訊飛語音識別系統(tǒng) Mysql連接數(shù)設置 服務器配置

一、執(zhí)行,php artisan make:event AdminLoginEvent 命令,Laravel目錄\app\Events會生成AdminLoginEvent.php文件,

二、我們先在\app\Providers目錄下找到EventServiceProvider.php文件,該文件內有一個Events-Listeners數(shù)組來保存事件和監(jiān)聽者的映射關系:

protected $listen = [
  'App\Events\AdminLoginEvent' => [
    'App\Listeners\AdminLogListener',
  ],
];

三、執(zhí)行,php artisan event:generate 命令,Laravel\app\Listeners目錄下會生成AdminLogListener.php文件在文件里寫一些業(yè)務:

?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);
  }
}

四、觸發(fā)這個事件,在用戶登錄的地方:

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', '賬戶或密碼錯誤');
  }
}

這樣就完成了整個用戶登錄的監(jiān)聽事件,當用戶登錄的時候表就會添加用戶登錄的信息。

以上這篇laravel實現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • laravel 5.3 單用戶登錄簡單實現(xiàn)方法
  • Laravel 自動生成驗證的實例講解:login / logout

標簽:棗莊 衢州 大理 衡水 廣元 蚌埠 萍鄉(xiāng) 江蘇

巨人網(wǎng)絡通訊聲明:本文標題《laravel實現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266