Bu, kullanıcı (Laravel görünümü) sunucuya (Laravel denetleyicisi) bir istekte bulunduğunda, isteğin ara katman yazılımından geçeceği anlamına gelir. Bu şekilde ara yazılım, isteğin doğrulanıp doğrulanmadığını kontrol edebilir:
Laravel şunları yapmanızı sağlar defiKimlik doğrulama dışındaki çeşitli görevleri gerçekleştirmek için ek ara yazılımı tamamlayın ve kullanın.
Kimlik doğrulama ve CSRF koruması gibi laravel ara yazılımları dizinde bulunur uygulama/Http/Ara yazılım .
Bu nedenle ara yazılımın, koşulları doğrulamanın ve eylemler gerçekleştirmenin mümkün olduğu bir http istek filtresi olduğunu söyleyebiliriz.
Yeni bir ara yazılım oluşturmak için aşağıdaki komutu çalıştırıyoruz:
php artisan make:middleware <name-of-middleware>
biz yaratırız middleware
ve biz buna diyoruz CheckAge
, artisan
bize şu şekilde cevap verecektir:
Yukarıdaki pencere, ara yazılımın "" adıyla başarıyla oluşturulduğunu gösterir. Kontrol Yaşı ".
CheckAge ara yazılımının oluşturulup oluşturulmadığını görmek için app/Http/Middleware klasöründeki projeye gidin, yeni oluşturulan dosyayı göreceksiniz.
Yeni oluşturulan dosya aşağıdaki koda sahiptir
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
Ara katman yazılımını kullanmak için onu kaydetmemiz gerekir.
Laravel'de iki tür ara yazılım vardır:
Middleware globale
Route Middleware
Il küresel ara katman yazılımı uygulamadan gelen her HTTP isteğinde yürütülürken, Yönlendirme Ara Yazılımı belirli bir yola atanacaktır. Middleware şu adreste kaydedilebilir: app/Http/Kernel.php. Bu dosya iki özellik içeriyor $ara yazılım e $routeMiddleware . $middleware özelliği küresel ara katman yazılımını ve sahipliğini kaydetmek için kullanılır $routeMiddleware rotaya özel ara yazılımları kaydetmek için kullanılır.
Genel ara katman yazılımını kaydetmek için, sınıfı $orta katman özelliğinin sonunda listeleyin.
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
Rotaya özgü ara yazılımları kaydetmek için anahtarı ve değeri $routeMiddleware özelliğine ekleyin.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
Biz yarattık Kontrol Yaşı önceki örnekte. Artık bunu ara yazılım rota özelliğinde kaydedebiliriz. Böyle bir kayıt için kod aşağıda gösterilmiştir.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
];
Middleware ile de parametre geçebiliriz.
Örneğin, uygulamanızın kullanıcı, yönetici, süper yönetici vb. farklı rolleri varsa. ve role dayalı eylemi doğrulamak istiyorsanız, bunu ara yazılım ile parametreleri ileterek yapabilirsiniz.
Oluşturduğumuz ara yazılım aşağıdaki işlevi içerir ve argümandan sonra özel argümanları iletebiliriz. $sonraki .
public function handle($request, Closure $next)
{
return $next($request);
}
Şimdi sıfırdan oluşturacağımız yeni bir ara katmana rol parametresini ayarlamaya çalışalım ve ardından aşağıdaki komutu çalıştırarak Rol Ara Katmanı oluşturmaya geçelim.
İşleç yöntemini aşağıdaki gibi değiştirin
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
parametreyi ekledik $role
ve yöntemin içinde satır echo
çıktıya rolün adını yazmak için.
Şimdi belirli bir yol için RoleMiddleware ara yazılımını kaydedelim
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
];
Şimdi ara yazılımı parametre ile test etmek için bir istek ve bir yanıt oluşturmamız gerekiyor. Yanıtı simüle etmek için TestController olarak adlandıracağımız denetleyiciyi oluşturalım.
php artisan make:controller TestController --plain
az önce çalıştırılan komut, klasörün içinde yeni bir denetleyici oluşturacak app/Http/TestController.php
ve yöntemi değiştirin index
çizgi ile echo "<br>Test Controller.";
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TestController extends Controller {
public function index() {
echo "<br>Test Controller.";
}
}
Yanıt ayarını yaptıktan sonra dosyayı düzenleyerek request oluşturuyoruz. routes.php
ekleyerek route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
bu noktada URL'yi ziyaret ederek örneği deneyebiliriz. http://localhost:8000/role
ve tarayıcıda ikisini göreceğiz echo
Role editor
Test Controller
Il terminable Middleware
Yanıt tarayıcıya gönderildikten sonra bazı görevleri gerçekleştirir. Bu, yöntemle bir ara yazılım oluşturarak elde edilebilir. ara yazılımda sonlandırın. Il terminable Middleware
ile kayıtlı olmalıdır middleware
küresel. yöntem terminate
iki argüman alacak $ istek e $ yanıtı.
Yöntem Terminate
aşağıdaki kodda gösterildiği gibi oluşturulmalıdır.
php artisan make:middleware TerminateMiddleware
Ara yazılım oluşturulduktan sonra app/Http/Middleware/TerminateMiddleware.php
kodu şu şekilde değiştirelim
<?php
namespace App\Http\Middleware;
use Closure;
class TerminateMiddleware {
public function handle($request, Closure $next) {
echo "Executing statements of handle method of TerminateMiddleware.";
return $next($request);
}
public function terminate($request, $response) {
echo "<br>Executing statements of terminate method of TerminateMiddleware.";
}
}
bu durumda bir yöntemimiz var handle
ve bir yöntem terminate
iki parametre ile $request
e $response
.
Şimdi Middleware'i kaydedelim
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
'terminate' => \App\Http\Middleware\TerminateMiddleware::class,
];
Şimdi yanıtı simüle etmek için denetleyiciyi oluşturmamız gerekiyor.
php artisan make:controller XYZController --plain
sınıfın içeriğini değiştirmek
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Şimdi dosyayı düzenlememiz gerekiyor routes/web.php
isteği etkinleştirmek için gereken yolları ekleme
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
bu noktada URL'yi ziyaret ederek örneği deneyebiliriz. http://localhost:8000/terminate
ve tarayıcıda aşağıdaki satırları göreceğiz
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Bunları da beğenebilirsiniz:
Veeam Coveware, siber şantaj olaylarına müdahale hizmetleri sağlamaya devam edecek. Coveware adli tıp ve iyileştirme yetenekleri sunacak…
Kestirimci bakım, tesis yönetimine yenilikçi ve proaktif bir yaklaşımla petrol ve gaz sektöründe devrim yaratıyor.…
İngiltere CMA, Big Tech'in yapay zeka pazarındaki davranışları hakkında bir uyarı yayınladı. Orada…
Avrupa Birliği'nin binalarda enerji verimliliğini artırmak amacıyla formüle ettiği "Yeşil Evler" Kararnamesi yasama sürecini tamamladı...