pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

利用Laravel事件系統(tǒng)如何實(shí)現(xiàn)登錄日志的記錄詳解

這篇文章主要給大家介紹了利用Laravel事件系統(tǒng)如何實(shí)現(xiàn)登錄日志記錄的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。

本文介紹的是利用Laravel事件系統(tǒng)實(shí)現(xiàn)登錄日志記錄的相關(guān)內(nèi)容,分享出來給大家參考,下面來看看詳細(xì)的介紹:

明確需求

記錄一個(gè)登錄日志,通常需要下列信息:

  • 客戶端Agent信息
  • 客戶端IP地址
  • 訪問IP地點(diǎn)
  • 登錄時(shí)間
  • 登錄用戶信息

確立工具

明確完需求后,根據(jù)每個(gè)需求查找自己所需的工具吧。

  • 需求1 jenssegers/agent就可以滿足我們要求
  • 需求2 Laravel下直接Request::getClientIp()
  • 需求3 zhuzhichao/ip-location-zh這個(gè)包可以滿足要求
  • 需求4 time()
  • 需求5 登錄用戶模型

開工

采用Laravel的事件訂閱系統(tǒng)來實(shí)現(xiàn),需要實(shí)現(xiàn)一個(gè)登錄事件和一個(gè)登錄事件監(jiān)聽器。

生成事件和監(jiān)聽器

Laravel命令行支持自動(dòng)生成事件和監(jiān)聽器,在App\Providers\EventServiceProvider中添加需要實(shí)現(xiàn)的事件:

protected $listen = [ 
  ...,
  //添加登錄事件及對(duì)應(yīng)監(jiān)聽器,一個(gè)事件可綁定多個(gè)監(jiān)聽器
  'App\Events\LoginEvent' => [
  'App\Listeners\LoginListener',
 ],
];

運(yùn)行命令:php artisan event:generate就會(huì)自動(dòng)生成事件和監(jiān)聽器,已存在的事件和監(jiān)聽器不會(huì)發(fā)生改變。

登錄事件(Event)

回顧下需求,我們的登錄事件需要的5點(diǎn)信息,在事件中需要記錄這些信息,所以事件設(shè)計(jì)如下:

namespace App\Events;

use Illuminate\Broadcasting\Channel; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Broadcasting\PrivateChannel; 
use Illuminate\Foundation\Events\Dispatchable; 
use Illuminate\Broadcasting\InteractsWithSockets;

use App\Models\User; 
use Jenssegers\Agent\Agent;

class LoginEvent 
{
 use Dispatchable, InteractsWithSockets, SerializesModels;

 /**
 * @var User 用戶模型
 */
 protected $user;

 /**
 * @var Agent Agent對(duì)象
 */
 protected $agent;

 /**
 * @var string IP地址
 */
 protected $ip;

 /**
 * @var int 登錄時(shí)間戳
 */
 protected $timestamp;

 /**
 * 實(shí)例化事件時(shí)傳遞這些信息
 */
 public function __construct($user, $agent, $ip, $timestamp)
 {
 $this->user = $user;
 $this->agent = $agent;
 $this->ip = $ip;
 $this->timestamp = $timestamp;
 }

 public function getUser()
 {
 return $this->user;
 }

 public function getAgent()
 {
 return $this->agent;
 }

 public function getIp()
 {
 return $this->ip;
 }

 public function getTimestamp()
 {
 return $this->timestamp;
 }

 /**
 * Get the channels the event should broadcast on.
 *
 * @return Channel|array
 */
 public function broadcastOn()
 {
 return new PrivateChannel('channel-default');
 }
} 

在事件中記錄所需要的信息,并實(shí)現(xiàn)這些信息的get方法。

登錄監(jiān)聽器(Listener)

在監(jiān)聽器中,獲取到事件傳遞過來的信息,把這些信息記錄到數(shù)據(jù)庫中,實(shí)現(xiàn)如下:

namespace App\Listeners;

use App\Events\LoginEvent;

class LoginListener 
{

 // handle方法中處理事件
 public function handle(LoginEvent $event)
 {
 //獲取事件中保存的信息
 $user = $event->getUser();
 $agent = $event->getAgent();
 $ip = $event->getIp();
 $timestamp = $event->getTimestamp();

 //登錄信息
 $login_info = [
  'ip' => $ip,
  'login_time' => $timestamp,
  'user_id' => $user->id
 ];

 // zhuzhichao/ip-location-zh 包含的方法獲取ip地理位置
 $addresses = \Ip::find($ip);
 $login_info['address'] = implode(' ', $addresses);

 // jenssegers/agent 的方法來提取agent信息
 $login_info['device'] = $agent->device(); //設(shè)備名稱
 $browser = $agent->browser();  
 $login_info['browser'] = $browser . ' ' . $agent->version($browser); //瀏覽器
 $platform = $agent->platform();
 $login_info['platform'] = $platform . ' ' . $agent->version($platform); //操作系統(tǒng)
 $login_info['language'] = implode(',', $agent->languages()); //語言
 //設(shè)備類型
 if ($agent->isTablet()) {
  // 平板
  $login_info['device_type'] = 'tablet';
 } else if ($agent->isMobile()) {
  // 便捷設(shè)備
  $login_info['device_type'] = 'mobile';
 } else if ($agent->isRobot()) {
  // 爬蟲機(jī)器人
  $login_info['device_type'] = 'robot';
  $login_info['device'] = $agent->robot(); //機(jī)器人名稱
 } else {
  // 桌面設(shè)備
  $login_info['device_type'] = 'desktop';
 }

 //插入到數(shù)據(jù)庫
 DB::table('login_log')->insert($login_info);

 } 
}

這樣,監(jiān)聽器就完成了,每次一觸發(fā)登錄事件,就會(huì)在數(shù)據(jù)庫中添加一條登錄信息。

觸發(fā)事件

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要給大家介紹了關(guān)于利用Homestead如何快速運(yùn)行一個(gè)Laravel項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們
這篇文章主要給大家介紹了關(guān)于Laravel中Intervention/image圖片處理擴(kuò)展包的安裝、使用與在使用可能遇到的坑的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一
這篇文章主要為大家詳細(xì)介紹了Laravel下生成驗(yàn)證碼的類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
Laravel以其簡(jiǎn)潔、優(yōu)雅的特性贏得了大家的廣泛關(guān)注,無論是專家還是新手,在開發(fā)PHP項(xiàng)目的時(shí)候,都會(huì)第一時(shí)間的想到Laravel。本文我們將討論為什么Laravel會(huì)成為最成功的PHP框架
本篇文章主要介紹了Laravel 批量更新多條數(shù)據(jù)的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
這篇文章主要介紹了laravel5 使用try catch的相關(guān)知識(shí),需要的朋友可以參考下
主站蜘蛛池模板: 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 压装机-卧式轴承轮轴数控伺服压装机厂家[铭泽机械] | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 智慧消防-消防物联网系统云平台 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 达利园物流科技集团-| 恒温槽_恒温水槽_恒温水浴槽-上海方瑞仪器有限公司 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 杭州ROHS检测仪-XRF测试仪价格-百科 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 郑州墨香品牌设计公司|品牌全案VI设计公司 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心| 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 |