当前位置: 首页 > 后端技术 > PHP

laravel5.1--获取用户登录状态,事件、监听、中间件的简单应用

时间:2023-03-29 15:53:13 PHP

事件有很多方面,比如登录、购买、搜索、查看文章等,监听器监听事件后,它会执行一些操作。Laravel使用观察者模式来实现这种监控机制。现在我们用一个用户登录来解释一个事件,监听一个事件并触发一些操作的全过程。注册事件/监听器首先在App/Providers/EventServiceProvider.php注册事件和监听器的映射关系。在下面三个映射关系中,我们只使用LoginEvent和LoginSuccessprotected$listen=['App\Events\LoginEvent'=>['App\Listeners\LoginSuccess'],'App\Events\LogoutEvent'=>['App\Listeners\LogoutSuccess'],'App\Events\UserAccess'=>['App\Listeners\UserAccess']];然后在根目录下执行artisan$phpartisanevent:generate。在Events和App\Listeners下生成App/Events/LoginEvent和App/Listeners/LoginSuccess等PHP文件定义事件类statut=newStatut;}}?>ListenerBase.php实例化了一个Statut类,这个Statut类在App/Services文件夹下,我们下面会用到现在来到App/Listeners/LoginSuccess.phpstatut->setLoginStatut($event);}}LoginSuccess继承ListenerBase,handle方法中的$this->statut->setLoginStatut获取登录用户的状态Statut.php在App/Services新建一个php文件Statut.php。在这个文件中,主要定义了几种获取当前登录用户状态的方法。当事件触发时,会执行Statut.php文件中的操作put('statut',auth()->user()->role->slug);//用户登录后的auth()->user()completed会有一个值}/***设置访客状态**@returnvoid*/publicfunctionsetVisitorStatut(){session()->put('statut','visitor');}/***设置状态**@returnvoid*/publicfunctionsetStatut(){if(!session()->has('statut')){session()->put('statut',auth()->check()?auth()->user()->role->slug:'visitor');}}}?>好了,事件和监听完成后,就需要触发操作了。这里我们使用中间件(Middleware)定义中间件,使用Artisan命令创建中间件App/Http/Middleware/App.php$phpartisanmake:middlewareApp执行成功后,使用全局方法event