以下は、php 中国語 Web サイトのビデオを見ながらまとめたメモです。参考にしてください。以下に基礎知識を記載しますので、基礎知識が分からない方はご覧ください。私が共有した最後の記事は、composer の laravel のインストールについてでした。さらに記事を見たい場合は、私をフォローしてください。お役に立てれば幸いです。
ミドルウェアは、実際にはルートに追加されるフィルタリングまたは保護の層です。プレフィックスと名前空間はグループの配列パラメータとして渡され、ミドルウェアもグループの配列パラメータとして渡されます
#1. ミドルウェアの作成##ミドルウェア追加前
Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () { Rount::get('login','IndexController@login'); Rount::get('index','IndexController@index'); });
Webミドルウェア追加後
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () { Rount::get('login','IndexController@login'); Rount::get('index','IndexController@index'); });
Webミドルウェアはセッション機能を利用することができます。 CSRF保護を有効にします
Route::get('/',function(){ session(['key'=>123]); return view('welcome'); });
そしてセッションを出力するルートを設定します
Route::get('/test',function(){ echo session('key'); return 'test'; });
しかし、ミドルウェア内にないため、セッションの値を取得できません
次へルートをグループに入れるミドルウェアを設定します
Route::group(['middleware'=>['web']], function () { Route::get('/',function(){ session(['key'=>123]); return view('welcome'); }); Route::get('/test',function(){ echo session('key'); return 'test'; }); });
システムのデフォルトの Web ミドルウェア。ミドルウェアは Kernel.php にあります
セッションは Web ミドルウェアを使用する場合にのみ使用されます
2. Kernel.php ファイルでバックグラウンド管理クラウド ログイン ミドルウェアを手動で定義します定義前:
protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ];
定義後:
protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'admin.login' => \App\Http\Middleware\AdminLogin::class, ];
cmd ウィンドウでプロジェクト ディレクトリに切り替え、コマンドを使用してミドルウェアを作成します
php artisan make:middleware AdminLogin
次に、ミドルウェア フォルダー内の AdminLogin.php ファイルを確認します
<?php namespace App\Http\Middleware; use Closure class AdminLogin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { echo 12344445; return $next($request); } }
次に、作成したばかりのミドルウェア ファイルを呼び出します
Route::group(['middleware'=>['web','admin.login'],], function () { Route::get('/',function(){ session(['key'=>123]); return view('welcome'); }); Route::get('/test',function(){ echo session('key'); return 'test'; }); });
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () {
Rount::get('login','IndexController@login');//登录不需要后台管理员的超级认证
});
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () {
Rount::get('index','IndexController@index');//超级管理员需要认证后才能进入欢迎页面和编辑页面
Rount::resource('article','ArticleController');
});
ログインのシミュレーションでは、ログイン情報をセッションに書き込みます。次に、Admin パッケージの下にある IndexController コントローラーを見つけます
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; class IndexController extends Controller { public function index(){ return view('welcome'); } function login(){ session(['admin'=>1]); //登录信息用admin存储 return '<h1>登录<h1>' } }
ミドルウェアでセッションを出力してテストします
次に、Middleware フォルダー内の AdminLogin.php ファイルを確認します
<?php namespace App\Http\Middleware; use Closure class AdminLogin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { echo session('admin'); return $next($request); } }
検証:
最初にログインし、ようこそページにアクセスします。1 が出力されれば、設定が成功したことを意味します (ログイン時にセッションに 1 を保存し、その後ウェルカム ページに入ります。ウェルカム ページでは、ミドルウェアの AdminLogin.php が呼び出されます)、
引き続き、ミドルウェア フォルダーに AdminLogin.php ファイルをセットアップします。##
<?php namespace App\Http\Middleware; use Closure class AdminLogin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if(!session('admin')){ return redirect('admin/login'); //如果没有登录跳转到登录页面 }; return $next($request); } }
以上が【note編成】laravel HTTPミドルウェアの導入と作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。