Middleware

Middleware, uygulamaya gelen HTTP isteklerinin filtrelenmesini sağlayan bir ara katmandır. Middleware tanımlanan bir url çağrıldığında, önce middleware içerisindeki işlemler yapılır.

Örneğin sadece kayıtlı kullanıcıların görmesi istenen bir sayfa için login kontrolü yapan bir middleware tanımlanabilir.

  1. Middleware Oluşturma
  2. Middleware Tanımlama
  3. Default Middleware Oluşturma
  4. Controller İçinde Middleware Tanımlama

Middleware Oluşturma

Titan Framework'te middleware'lar /App/Middlewares dizini içerisinde yer almalıdır ve yalnızca bir adet handle adında, static method içermelidir.

Aşağıdaki örnekte, session'da tanımlı login değeri olup olmadığına bakılıyor. Eğer sonuç false dönerse home sayfasına yönlendiriliyor.

namespace App\Middlewares;

use Session;
					
class SampleMiddleware
{
	public static function handle()
	{
		if (!Session::has('login')) {
			return redirect('home');
		}
	}
}

Middleware Tanımlama

Oluşturulan middleware'ların çalıştırılması için, sistemde tanımlanması gerekir. Middleware tanımlamaları, /App/Config dizinindeki Services.php dosyasında bulunan middlewares['manual'] anahtarında yapılır.

Aşağıdaki örnek bir middleware tanımlaması görülmektedir;

'middlewares' => [
	'manual' => [
		'SampleMiddleware' => App\Middlewares\SampleMiddleware::class,
	]
],

Default Middleware Tanımlama

Default middleware, projenin tamamında, her bir controller öncesinde çalıştırılır. Default middleware tanımlamaları, /App/Config dizinindeki Services.php dosyasında bulunan middlewares['default'] anahtarında yapılır.

Aşağıdaki örnek bir default middleware tanımlaması görülmektedir;

'middlewares' => [
	'default' => [
		'DefaultMiddleware' => App\Middlewares\DefaultMiddleware::class,
	]
],

Controller İçinde Middleware Tanımlama

Middleware tanımlamaları, /App/Config/Routes.php dosyasında yapılabildiği gibi, herhangi bir controller içinde de yapılabilir. Bunun için ilgili controller'ın __construct() methodu içerisinde middleware() methodu kullanılır. Çalıştırılmak istenen her bir middleware adını içeren bir adet array parametre alır.

class Home extends Controller
{
	public function __construct()
	{
		$this->middleware(['auth']);
	}
}