laravel实现登录时监听事件,添加登录用户的记录方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-25 16:15:43 浏览: 评论:0
今天小编就为大家分享一篇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文件在文件里写一些业务:
- 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 = emptyempty($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', '账户或密码错误');
- }
- }
这样就完成了整个用户登录的监听事件,当用户登录的时候表就会添加用户登录的信息。
Tags: laravel监听 laravel添加登录用户
相关文章
- ·Laravel事件监听器用法实例分析(2021-11-12)
- ·laravel 事件/监听器实例代码(2021-11-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)