任务20:完善中间件登录校验
1,\routes\web.php 编辑为
<?php Route::group(['prefix'=>'admin','namespace'=> 'Admin','middleware' =>['checklogin:admin.login.login']],function(){ /*'middleware' =>['checklogin']是权限验证,若没登录会自动跳转到登录页 *['checklogin:admin.login.login']向 \App\Http\Middleware\CheckLogin.php传参"admin.login.login" */ //展示后台登录页面admin/login Route::get("login","LoginController@index") -> name("admin.login.login"); //登录处理 Route::post("login","LoginController@login") -> name("admin.login.login"); //后台首页 Route::get("index","IndexController@index") -> name("admin.index.index"); }); Route::get("/",function(){return "Hello Laravel 6.0.18";});
2,App\Http\Middleware\CheckLogin.php 的 handle 方法传入第3个参数
public function handle($request, Closure $next,$param) { $curRouteName = $request->route()->getName();//获取当前路由的别名 if($curRouteName != $param) {//对比传参过来要豁免校验的别名$param,不是的都要进行校验 if (!auth()->check()) {//如果没有权限 session()->flush();//清空所有session return redirect()->route('admin.login.login')->withErrors(['errors' => '请先登录']); } } return $next($request); }

浙公网安备 33010602011771号