建立中介层
我们在这里透过session取得了User的资料,
但是在这之前,
针对需要登入才能使用的页面,
我们要先确认使用者是否已经登入,
如果还没就转到登入页,
我们可以用php artisan make:middleware
指令来建立中介层.
当我们下指令
php artisan make:middleware AdminMiddleware
就会产生app/Http/Middleware/AuthUserAdminMiddleware.php这个档案,
我们看一下档案内容
<?php
namespace App\Http\Middleware;
use Closure;
class AdminMiddleware
{
public function handle($request, Closure $next)
{
return $next($request);
}
}
return $next($request);
表示照常做原本要做的动作,
我们在这里加上登入的判断
<?php
namespace 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
中注册中介层
<?php
namespace 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 的时候,
如果还没有登入,
就会自动转到首页.
>>: [Day 35] 自我介绍後台及前台(四) - 前台的首页
macOS 的预设终端机为 Terminal.app ,对於使用终端频率较少的一般使用者是十分足够的...
Course Schedule I的延伸,这次要排出课程顺序。 思路 有大概想到去找node的顺序跟...
在上一章节我们已经可以抓取log资料到Elasticsearch内,今天我们将在进一步的设定file...
在现代的网页中绝大部分会需要与 server 互相沟通,无论是从 server 获取商品的资料用於显...
教授说12点前要看到实验结果,但我组长看我不先发文,也想把我杀了,人真难做,我只好先来发文QQ 心得...