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
