中間件的創(chuàng)建
1. 使用命令創(chuàng)建中間件
php artisan make:middleware CheckIFVerify
- 執(zhí)行以上命令會在“App\Http\Middleware\”文件創(chuàng)建CheckIFVerify.php
- CheckIFVerify.php文件中有handle()方法丁稀,在此方法中編寫校驗規(guī)則
//可以使用$request->user()獲取當(dāng)前登錄對象耻涛。使用$request->user()->email獲取當(dāng)前對象屬性值。
public function handle($request, Closure $next)
{
//返回下個中間件
return $next($request);
}
2.注冊中間件
- 中間件只有注冊之后才能使用
- 注冊是在"App\Http\kernel.php"文件中的$routeMiddleware屬性中
protected $routeMiddleware = [
// ‘中間名稱’ => 中間件路徑
‘CheckIFEmail’ => App\Http\Middleware\CheckIFVerify::class,
];
中間件使用
1.在路由中使用
Route::get(['middleware' => 'CheckIFEmail'],function(){
//在此寫需要經(jīng)過中間件校驗的路由
});
2.在控制器中的__construct方法中寫:
public function __construct()
{
$this->middleware('中間件名稱',[
'except' => ['show','create','store']
]);
{
- 中間件是在控制器的構(gòu)造器方法中調(diào)用砚亭,middleware方法接收兩個參數(shù)
- 中間件名稱
- 過濾方法名稱的數(shù)組(except是除那些方法不用使用中間件過濾宫患,還有與之相反作用的only方法)
- 指定一些只允許未登錄用戶訪問的動作剂碴,通過設(shè)置guest屬性
public function __construct() { $this->middleware('guest', [ 'only' => ['create'] ]); }
授權(quán)策略的作用
- 當(dāng)用戶完成登錄之后咸这,要限制已登錄用戶操作其他用戶的信息
授權(quán)策略的使用
- 可以使用命令生成授權(quán)策略類文件
php artisan make:policy Userpolicy
- 授權(quán)策略文件存放在app\Policies文件夾下
- 在授權(quán)策略文件中定義方法(此方法中不用傳第一個參數(shù)痒蓬,框架會自動加載當(dāng)前登錄用戶)
public function update(User $currentUser, User $user)
{
return $currentUser->id === $user->id;
}
- 在AuthServiceProvider(app/Providers)類中對授權(quán)策略設(shè)置,在policies屬性中指定授權(quán)策略,例如:
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
\App\Models\User::class => \App\Policies\UserPolicy::class,
];
- 在控制器中是用授權(quán)策略方法
$this->authorize('update',$user);