任务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);
    }

 

posted @ 2020-05-14 16:33  pensive2019  阅读(218)  评论(0)    收藏  举报