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

吾爱主题 阅读:217 2021-08-24 16:01:00 评论:0

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

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

?
1 2 3 4 5 protected $listen = [    'App\Events\AdminLoginEvent' => [      'App\Listeners\AdminLogListener' ,    ], ];

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 <?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 );    } }

四、触发这个事件,在用户登录的地方:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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实现登录时监听事件,添加登录用户的记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/logic_lai/article/details/80389259

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容