场景:根据用户登录,后所有类都要验证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']);
});
然后去测试一下。