Takip et

Lithe’de JWT Orta Katmanını Entegre Etme

Lithe’de JWT Orta Katmanını Entegre Etme

Lithe, PHP için minimalist ve esnek bir çerçevedir. Bu makalede Lithe projenize JWT (JSON Web Token) orta katmanını nasıl entegre edeceğinizi adım adım göstereceğim.

JWT Orta Katmanı Nedir?

JWT (JSON Web Token), bir kullanıcıyı kimliklendirmek ve yetkilendirmek için güvenli bir standarttır. Bir JWT, üç bölümden oluşan bir JSON objesidir:

  • Başlık: JWT türünü ve kullanılan algoritmayı belirtir.
  • Yük: Kullanıcı kimliği, rol ve diğer ilgili verileri içerir.
  • İmza: Başlık ve yükü doğrulamak için kullanılan dijital imza.

JWT’ler, sunucu tarafı uygulamalarda oturum yönetimi, API güvenliği ve kullanıcı yetkilendirme gibi birçok senaryoda kullanılabilir.

Lithe’de JWT Orta Katmanını Kurma

Lithe’de JWT orta katmanını kullanmak için öncelikle birkaç paket yüklememiz gerekiyor:

“`bash
composer require firebase/php-jwt
composer require league/event
“`

Bu paketler JWT’leri oluşturmak, doğrulamak ve olayları yönetmek için gerekli fonksiyonları sağlar.

Orta Katman Sınıfı

Şimdi JWT orta katman sınıfımızı oluşturalım. Bu sınıf, JWT tokenlerini oluşturmak, doğrulamak ve kullanıcının rol bilgilerini almak gibi temel fonksiyonları içerecektir.

“`php
secretKey = $secretKey;
$this->emitter = $emitter;
}

public function handle(callable $next)
{
return function ($request) use ($next) {
$token = $this->getTokenFromRequest($request);

if (!$token) {
$this->emitter->emit(‘auth.failure’);
return $next($request);
}

try {
$decoded = JWT::decode($token, $this->secretKey, [‘HS256’]);
$request->setAttribute(‘user’, $decoded);
$this->emitter->emit(‘auth.success’, $decoded);
return $next($request);
} catch (\Exception $e) {
$this->emitter->emit(‘auth.failure’, $e);
return $next($request);
}
};
}

private function getTokenFromRequest($request)
{
// Tokenı HTTP Header’dan veya Cookie’den alın
$token = $request->getHeaderLine(‘Authorization’);
if (!$token) {
$token = $request->getCookie(‘jwt’);
}
return $token;
}
}
“`

Orta Katmanı Kaydetme

Orta katmanı Lithe’nin yapılandırma dosyasına kaydetmemiz gerekiyor. Bu işlem, orta katmanın her isteğin işlenmesi sırasında otomatik olarak çağrılmasını sağlayacaktır.

“`php
[
‘global’ => [
JWTMiddleware::class
]
],
// … diğer yapılandırmalar …
];
“`

Olayları Yönetme

JWT orta katmanı, olaylar göndererek JWT tokeninin oluşturulması veya doğrulanması sırasında oluşan farklı durumları izlememizi sağlar. Bu olayları kullanarak, örneğin kullanıcıyı oturum açma veya oturumdan çıkarma gibi işlemleri gerçekleştirebiliriz.

“`php
addListener(‘auth.success’, function ($user) {
// Kullanıcı oturum açıldı
// Örneğin, kullanıcı verilerini bir veritabanından yükleyebilirsiniz.
// …
});

$emitter->addListener(‘auth.failure’, function ($error = null) {
// Kimlik doğrulama başarısız oldu
// Örneğin, kullanıcıyı giriş sayfasına yönlendirebilirsiniz.
// …
});

// … diğer kod …
“`

Kullanım Örneği

Şimdi, JWT orta katmanını kullanarak bir API yolunu koruyalım. Bu API yolunun sadece oturum açmış kullanıcılar tarafından erişilebilir olmasını sağlayacağız.

“`php
request->getAttribute(‘user’);
// …
})
->middleware(JWTMiddleware::class);
“`

Bu kod, `/protected` yolunu JWTMiddleware ile korur. JWT tokeni doğru bir şekilde doğrulanırsa, `$user` değişkeni doğrulanmış kullanıcı bilgilerini içerecektir.

Özet

Bu makale, Lithe’de JWT orta katmanını entegre etme adımlarını gösterdi. JWT orta katmanı kullanarak, Lithe uygulamalarınızda güvenli oturum yönetimi ve kullanıcı yetkilendirme gerçekleştirebilirsiniz.

Daha fazla bilgi için, aşağıdaki kaynakları inceleyebilirsiniz:

Bu makalenin yardımcı olmasını umuyorum. İyi kodlamalar!

#Etiketler
JWT, Lithe, Orta Katman, Kimlik Doğrulama, Yetkilendirme, Güvenlik, API

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version