场景:根据用户登录,后所有类都要验证session。另外比如做一些活动也可以使用中间件,比如活动在11.11开始等,如果没有开始进入等待页或者其他游戏页面。
1、在Http/Middleware/创建一个类,我做的是验证session是否登录,创建checkSession.php
<?php namespace APP\Http\Middleware; class CheckSession { // 前置操作 public function handle($request, \closure $next) { if( !session()->has($request->userId) || $request->userId == NULL ) { return redirect('text3'); } return $next($request); // 请求 } }2、在kernel.php进行注册,首先这里注册服务,要明白我们要做什么,我们这里的需求不是全局的,在登录后才执行。 找到 protected $routeMiddleware 这个成员变量,加入 ‘check.session’ => \App\Http\Middleware\CheckSession::class, 这里key自己定义就行,会在写路由的时候使用
3、如何在路由使用
<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); Route::any('text','CsController@text'); Route::any('text3','CsController@text3'); Route::group(['middleware' => ['check.session']], function(){ Route::any('text1', ['uses' => 'CsController@text1']); Route::any('text2', ['uses' => 'CsController@text2']); }); 然后去测试一下。