[Day 34] 自我介绍后台及前台(三) - 建立中介层

建立中介层

我们在这里透过session取得了User的资料,
但是在这之前,
针对需要登入才能使用的页面,
我们要先确认使用者是否已经登入,
如果还没就转到登入页,

我们可以用php artisan make:middleware指令来建立中介层.

当我们下指令
php artisan make:middleware AdminMiddleware
http://img2.58codes.com/2024/20105694qDJCnAC7FQ.png

就会产生app/Http/Middleware/AuthUserAdminMiddleware.php这个档案,
我们看一下档案内容

<?phpnamespace App\Http\Middleware;use Closure;class AdminMiddleware{    public function handle($request, Closure $next)    {        return $next($request);    }}

return $next($request); 表示照常做原本要做的动作,
我们在这里加上登入的判断

<?phpnamespace App\Http\Middleware;use Closure;class AdminMiddleware{    public function handle($request, Closure $next)    {        //预设不允许存取        $is_allow = false;        //取得会员编号        $user_id = session()->get('user_id');                if(!is_null($user_id))        {            //已登入,允许存取            $is_allow_access = true;        }        if(!$is_allow)        {            //若不允许存取,重新导向至首页            return redirect()->to('/');        }        return $next($request);    }}

如果登入就可以继续进行下个步骤,
否则就回到首页.

之后我们要在app/Http/Kernel.php中注册中介层

<?phpnamespace App\Http;use Illuminate\Foundation\Http\Kernel as HttpKernel;class Kernel extends HttpKernel{    //应用程式共用中介层    protected $middleware = [        //省略    ];    //路由中介层群组    protected $middlewareGroups = [        //省略    ];    //应用程式中介层    protected $routeMiddleware = [        'auth.admin' => \App\Http\Middleware\AdminMiddleware::class,        //以下省略    ];}

$middleware是整个Laravel应用程式共用的中介层,
所有的请求都会经过这些中介层的处理.

$middlewareGroups是路由中介层群组,
所有的Web路由请求都会经过web的中介层群组处理,
所有的API路由请求都会经过api的中介层群组处理.

$routeMiddleware是个别的中介层,
分别指定不同的名称给中介层类别.

我们将自定义的中介层加在$routeMiddleware底下,
我们可以在routes/web.php中呼叫中介层,
有两种方式可以呼叫中介层,
一种是加在路由的后面

Route::group(['prefix' => 'admin'], function(){    //自我介绍相关    Route::group(['prefix' => 'user'], function(){        //自我介绍页面        Route::get('/', 'AdminController@editUserPage')->middleware(['auth.admin']);    });});

另外一种是把所有需要登入的页面都透过中介层

Route::group(['middleware'=>['auth.admin']], function(){    Route::group(['prefix' => 'admin'], function(){        //自我介绍相关        Route::group(['prefix' => 'user'], function(){            //自我介绍页面            Route::get('/', 'AdminController@editUserPage');            //处理自我介绍资料            Route::post('/', 'AdminController@editUserProcess');        });        //心情随笔相关        Route::group(['prefix' => 'mind'], function(){            //心情随笔列表页面            Route::get('/', 'AdminController@mindListPage');            //新增心情随笔资料            Route::get('/add', 'AdminController@addMindPage');            //处理心情随笔资料            Route::post('/edit', 'AdminController@editMindProcess');            //单一资料            Route::group(['prefix' => '{mind_id}'], function(){                //编辑心情随笔资料                Route::get('/edit', 'AdminController@editMindPage');                //删除心情随笔资料                Route::get('/delete', 'AdminController@deleteMindProcess');            });        });    });});

这时候我们输入 http://localhost:8915/admin/user 的时候,
如果还没有登入,
就会自动转到首页.


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章