|
Laravel, modern web uygulamalarında güvenlik özelliklerini kolay ve etkili bir şekilde sunan bir frameworktür. Authentication (kimlik doğrulama) ve Authorization (yetkilendirme), uygulamaların güvenliğini sağlamak için temel bileşenlerdir.
1. Authentication (Kimlik Doğrulama)
Kimlik doğrulama, bir kullanıcının kim olduğunu belirlemeye yönelik işlemdir. Laravel, kimlik doğrulama süreçlerini basitleştirmek için hazır özellikler sunar.
a. Laravel Breeze ile Hızlı Kurulum
Laravel Breeze, temel kimlik doğrulama sistemi kurmanızı kolaylaştırır.
Kurulum Adımları:
-
Laravel projesine Breeze yükleyin:
composer require laravel/breeze --dev
-
Breeze’i kurun:
php artisan breeze:install
-
Bağımlıkları yükleyin ve front-end yapısını oluşturun:
npm install && npm run dev
-
Migration dosyalarını çalıştırın:
php artisan migrate
b. Sanctum ile API Authentication
Laravel Sanctum, API tabanlı uygulamalar için kimlik doğrulama çözümleri sunar.
Kurulum Adımları:
-
Sanctum paketini kurun:
composer require laravel/sanctum
-
Middleware’i ekleyin:
app/Http/Kernel.php dosyasına şu middleware'i ekleyin:
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
-
Sanctum tablolarını oluşturun:
php artisan migrate
-
Kullanıcıyı kimlik doğrulama tokenı ile giriş yaptırın:
use Illuminate\Http\Request;
Route::post('/login', function (Request $request) {
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return response(['message' => 'Unauthorized'], 401);
}
return ['token' => $user->createToken('api-token')->plainTextToken];
});
2. Authorization (Yetkilendirme)
Yetkilendirme, kullanıcıların belirli kaynaklara veya işlemlere erişim izinlerini kontrol eder.
a. Gate Kullanımı
Gate, belirli işlemleri kontrol etmek için kullanılan basit bir mekanizmadır.
Gate Tanımlama:
App\Providers\AuthServiceProvider dosyasında bir gate tanımlayabilirsiniz:
use Illuminate\Support\Facades\Gate;
public function boot()
{
Gate::define('update-post', function ($user, $post) {
return $user->id === $post->user_id;
});
}
Gate Kontrolü:
if (Gate::allows('update-post', $post)) {
// Kullanıcı bu işlemi yapabilir
}
if (Gate::denies('update-post', $post)) {
// Kullanıcı bu işlemi yapamaz
}
b. Policy Kullanımı
Policy, bir modelle ilgili yetkilendirme mantığını organize etmek için kullanılır.
Policy Oluşturma:
php artisan make:policy PostPolicy
Policy Tanımlama:
PostPolicy dosyasında yetkilendirme metodları tanımlanabilir:
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
Policy'yi AuthServiceProvider'a Kaydetme:
AuthServiceProvider dosyasına policy'yi kaydedin:
protected $policies = [
Post::class => PostPolicy::class,
];
Policy Kullanımı:
if ($user->can('update', $post)) {
// Kullanıcı yetkili
}
3. Middleware ile Yetkilendirme
Laravel middleware, belirli rotalara erişim ızını kontrol etmek için kullanılır.
Middleware Oluşturma:
php artisan make:middleware CheckRole
Middleware Mantığı:
CheckRole dosyasında yetki kontrolü yapın:
public function handle($request, Closure $next, $role)
{
if (! $request->user() || $request->user()->role !== $role) {
return redirect('home');
}
return $next($request);
}
Middleware'i Route’da Kullanma:
Route::get('/admin', function () {
// Yönetici paneli
})->middleware('checkRole:admin');
4. Laravel Fortify ile Gelişmiş Authentication
Laravel Fortify, kimlik doğrulama ve iki faktörlü kimlik doğrulama gibi özellikleri destekler.
Fortify Kurulumu:
composer require laravel/fortify
Fortify Yapılandırması:
App\Providers\FortifyServiceProvider dosyasını oluşturun ve kaydedin:
Fortify::loginView(function () {
return view('auth.login');
});
5. Özelleştirilebilir Authentication
Laravel, kendi authentication sisteminizi oluşturmanıza olanak tanır. Auth facadeı ile giriş yapma, çıkış yapma ve kullanıcı bilgilerini doğrulama işlemleri kolayca yapılabilir.
Giriş Yapma:
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Kullanıcı doğrulandı
}
Çıkış Yapma:
Auth::logout();
Sonuç
Laravel, kimlik doğrulama ve yetkilendirme süreçlerini kolaylaştıran zengin bir özellik setine sahiptir. Gelişmiş yapılar ve özelleştirilebilirlik, uygulamalarınızın güvenliğini en üygün şekilde sağlar. İhtiyacınıza uygun bir yapı seçerek, Laravel'in güvenlik mekanizmalarından tam anlamıyla faydalanabilirsiniz. |