Rumah >rangka kerja php >Laravel >[Nota organisasi] Pengenalan dan penciptaan perisian tengah HTTP laravel
Berikut adalah nota yang saya susun semasa menonton video di laman web php Cina untuk rujukan anda. Berikut adalah beberapa pengetahuan asas Jika anda tidak biasa dengan pengetahuan asas, anda boleh lihat. Artikel terakhir yang saya kongsikan ialah tentang komposer memasang laravel Jika anda ingin melihat lebih banyak artikel, saya harap saya dapat membantu anda.
Perisian tengah sebenarnya menambah lapisan penapisan atau perlindungan pada penghalaan Awalan dan ruang nama dihantar sebagai parameter tatasusunan kumpulan, dan perisian tengah juga dihantar sebagai parameter tatasusunan kumpulan
1. Penulisan middleware
Sebelum menambah middlewareRoute::group(['prefix' => 'admin','namespace'=>'Admin'], function () { Rount::get('login','IndexController@login'); Rount::get('index','IndexController@index'); });Selepas menambah web middleware
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () { Rount::get('login','IndexController@login'); Rount::get('index','IndexController@index'); });web Middleware boleh menggunakan fungsi session, dayakan CSRF perlindungan
Route::get('/',function(){ session(['key'=>123]); return view('welcome'); });dan sediakan laluan untuk mengeluarkan sesi
Route::get('/test',function(){ echo session('key'); return 'test'; });tetapi kerana ia bukan dalam perisian tengah, sesi tidak boleh dikeluarkan Nilai Mari kita sediakan middleware yang meletakkan laluan ke dalam kumpulan
Route::group(['middleware'=>['web']], function () { Route::get('/',function(){ session(['key'=>123]); return view('welcome'); }); Route::get('/test',function(){ echo session('key'); return 'test'; }); });Perisian tengah web lalai sistem, middleware berada dalam Kernel.php Apabila menggunakan middleware web, session
akan digunakan 2. Tentukan secara manual perisian tengah log masuk awan pengurusan latar belakang dalam fail Kernel.php sendiri
Sebelum definisi: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, ];Selepas definisi:
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, ];Tukar ke direktori projek dalam tetingkap cmd dan gunakan arahan untuk mencipta middleware
php artisan make:middleware AdminLoginKemudian lihat AdminLogin dalam folder Middleware .php fail
<?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); } }dan kemudian panggil middleware yang baru dibuat
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'; }); });
3. Pengesahan pentadbir super latar belakang
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'); });Mana-mana pengguna boleh log masuk , tetapi jika log masuk berjaya, mereka akan memasuki halaman selamat datang Jika log masuk tidak berjaya, mereka akan pergi ke halaman log masuk Kerana maklumat log masuk disimpan dalam sesi, kami menggunakan maklumat sesi untuk menentukan sama ada untuk log masuk dalam Log masuk simulasi adalah untuk menulis maklumat log masuk ke dalam sesi, dan kemudian cari pengawal IndexController di bawah pakej Admin
<?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>' } }Mari keluarkan sesi dalam middleware untuk menguji
dan kemudian lihat dalam folder Middleware AdminLogin.php fail
<?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); } }
Pengesahan:
Mari kita log masuk dahulu, dan kemudian lawati halaman selamat datang. Jika 1 adalah output, ini bermakna tetapan kami berjaya (apabila log masuk, 1 Simpan dalam sesi, dan kemudian masukkan halaman alu-aluan. Halaman alu-aluan akan memanggil AdminLogin.php perisian tengah,),Kami terus menetapkan adminlogin dari folder middleware. perkara penting yang perlu dilakukan Jika anda tidak faham apa-apa, anda boleh meninggalkan mesej. Terima kasih atas sokongan anda. Saya harap saya dapat membantu anda Jika anda ingin melihat maklumat lanjut, ikuti saya dan teruskan berkongsi dalam artikel seterusnya.
Atas ialah kandungan terperinci [Nota organisasi] Pengenalan dan penciptaan perisian tengah HTTP laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!