JWT Kimlik Doğrulaması ile Güvenli Laravel API Oluşturma ⋆ ALexHost SRL

Tüm Barındırma hizmetlerimizde becerilerinizi test edin ve % 15 indirim kazanın!

Ödeme sırasında kodu kullanın:

Skills
06.12.2024

JWT Kimlik Doğrulaması ile Güvenli Laravel API Oluşturma

Laravel ile API’ler oluştururken, özellikle kullanıcı verileriyle uğraşırken güvenli kimlik doğrulama sağlamak çok önemlidir. JSON Web Tokens (JWT), durum bilgisi olmayan uygulamalarda kimlik doğrulamayı işlemek için sağlam bir yöntem sunar ve kullanıcı bilgilerinin taraflar arasında güvenli bir şekilde iletilmesini sağlar. Bu kılavuz, JWT kimlik doğrulamasını kullanarak güvenli bir Laravel API oluşturma sürecinde size yol gösterecektir.

Ön Koşullar

  • Temel PHP ve Laravel bilgisi.
  • Makinenizde Laravel yüklü (tercihen Laravel 9 veya daha yeni).
  • Composer yüklü.
  • MySQL veya uygulamanız için ayarlanmış başka bir veritabanı.

Adım 1: Yeni Bir Laravel Projesi Oluşturun

İlk olarak, Composer kullanarak yeni bir Laravel projesi oluşturun:

composer create-project laravel/laravel laravel-jwt-api

Proje dizininize gidin:

cd laravel-jwt-api

Adım 2: JWT Kimlik Doğrulama Paketini Yükleyin

Laravel’de JWT kimlik doğrulaması için en yaygın kullanılan paket

tymon/jwt-auth
paketidir. Composer kullanarak yükleyin:

composer require tymon/jwt-auth

Paket kurulumundan sonra JWT yapılandırmasını yayınlayın:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

Bu, projenizde bir

config/jwt.php
dosyası oluşturacaktır.

Adım 3: JWT Gizli Anahtarını Oluşturun

JWT’nin belirteçleri imzalamak için kullanacağı bir gizli anahtar oluşturun:

php artisan jwt:secret

Bu,

.env
dosyanıza belirteçlerin kodlanması ve kodunun çözülmesi için kullanılan bir
JWT_SECRET
girişi ekleyecektir.

Adım 4: Kimlik Doğrulamayı Ayarlayın

JWT kimlik doğrulamasını ayarlamak için API’niz için varsayılan korumayı yapılandırmanız gerekir.

Config/auth.php
dosyasını aşağıdaki gibi güncelleyin:

'defaults' => [
'guard' => 'api',
'şifreler' => 'kullanıcılar',

],‘guards’ => [
‘api’ => [
‘sürücü’ => ‘jwt,
‘sağlayıcı’ => ‘kullanıcılar’,
],
],

Bu Laravel’e API istekleri için

jwt
sürücüsünü kullanmasını ve
kullanıcı
sağlayıcısına karşı kimlik doğrulaması yapmasını söyler.

Adım 5: Kullanıcı Modelini ve Geçişi Oluşturun

Henüz bir

Kullanıcı
modeli oluşturmadıysanız, geçiş dosyasıyla birlikte oluşturabilirsiniz:

php artisan make:model Kullanıcı -m

Oluşturulan geçiş dosyasını

veritabanı/migrations/
bölümünde açın ve
ad
,
e-posta
ve
parola
gibi gerekli alanları ekleyin:

public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
}

Kullanıcılar
tablosunu oluşturmak için geçişi çalıştırın:

php artisan migrate

Adım 6: Kullanıcı Modelinde JWT Yöntemlerini Uygulayın

Kullanıcı
modelinde
(app/Models/User.php
),
JWTSubject
arayüzünü ve gerekli yöntemleri uygulayın:

use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements JWTSubject
{
public function getJWTIdentifier()
{
return $this->getKey();
}public function getJWTCustomClaims()
{
return [];
}
}

Adım 7: Kimlik Doğrulama Denetleyicileri Oluşturun

Kullanıcı kimlik doğrulamasını işlemek için bir denetleyici oluşturun:

php artisan make:controller AuthController

AuthController.php
dosyasında, kullanıcı kaydetme, oturum açma ve oturumu kapatma için yöntemler ekleyin:

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Tymon\JWTAuth\Facades\JWTAuth;
class AuthController extends Controller
{
public function register(Request $request)
{
$request->validate([
‘name’ => ‘required|string|max:255’,
’email’ => ‘required|string|email|max:255|unique:users’,
‘password’ => ‘required|string|min:6|confirmed,
]); $user = User::create([
‘name’ => $request->name,
’email’ => $request->email,
‘password’ => Hash::make($request->password),
]);$token = JWTAuth::fromUser($user);

return response()->json([‘token’ => $token], 201);
}

public function login(Request $request)
{
$credentials = $request->only(’email’, ‘password’);

if (!$token = Auth::attempt($credentials)) {
return response()->json([‘error’ => ‘Invalid credentials’], 401);
}

return response()->json([‘token’ => $token]);
}

public function logout()
{
Auth::logout();

return response()->json([‘message’ => ‘Successfully logged out’]);
}

public function me()
{
return response()->json(Auth::user());
}
}

Adım 8: API Rotalarını Tanımlayın

Routes/api.php
dosyasına kimlik doğrulama için rotalar ekleyin:

app\Http\Controllers\AuthControllerkullanın;

Route::post(‘register’,[AuthController::class, ‘register’]);
Route::post(‘login’,[AuthController::class, ‘login’]);
Route::post(‘logout’,[AuthController::class, ‘logout’])->middleware(‘auth:api’);
Route::get( me,[AuthController::class, ‘me’])->middleware(‘auth:api’);

Bu rotalar kullanıcı kaydı, oturum açma, oturum kapatma ve kimliği doğrulanmış kullanıcıyı getirme işlemlerini gerçekleştirir.

Adım 9: API Rotalarını Koruma

Diğer API rotalarını korumak için

auth:api
ara yazılımını kullanabilirsiniz. Örneğin,
gönderiler
için bir kaynak rotanız varsa:

Route::middleware('auth:api')->group(function () {
Route::resource('posts', PostController::class);
});

Bu, yalnızca kimliği doğrulanmış kullanıcıların bu rotalara erişebilmesini sağlar.

Adım 10: API’nin Test Edilmesi

Postman veya cURL gibi araçları kullanarak API’nizi test edebilirsiniz.

  • Bir kullanıcı kaydedin:
    POST /api/register
    Content-Type: application/json{

    “İsim”: “John Doe”,
    “e-posta”: “john@example.com”,
    “Şifre”: “Şifre”,
    “password_confirmation”: “şifre”
    }
  • Giriş yap:
    POST /api/login
    Content-Type: application/json{

    “e-posta”: “john@example.com”,
    “Şifre”: “şifre”
    }

    Bu, diğer isteklerin kimliğini doğrulamak için kullanabileceğiniz bir belirteç döndürecektir.

  • Korumalı rotaya erişim:
    GET /api/me
    gibi korumalı bir rotaya erişmek için
    Yetkilendirme
    başlığına belirteci ekleyin:
    Yetkilendirme: Taşıyıcı

Adım 11: JWT Belirteçlerini Yenileme (İsteğe Bağlı)

Bir belirteci yenilemek için

AuthController
‘a bir yöntem ekleyebilirsiniz:

public function refresh()
{
$token = Auth::refresh();
return response()->json(['token' => $token]);
}

Yenilemek için rotayı ekleyin:

Route::post('refresh', [AuthController::class, 'refresh'])->middleware('auth:api');

Sonuç

Bu kılavuzu takip ederek, JWT kimlik doğrulaması ile güvenli bir Laravel API’si oluşturdunuz, kullanıcı kaydı, oturum açma ve korumalı rotalara erişim sağladınız. JWT, özellikle API’leri ölçeklendirmek için yararlı olan durumsuz bir kimlik doğrulama mekanizmasını sürdürmenize olanak tanır. Bu kurulumla, uygulamanızın kimlik doğrulama mantığını daha da özelleştirebilir ve rol tabanlı erişim kontrolü ve uzun ömürlü oturumlar için yenileme belirteçleri gibi ek özellikleri entegre edebilirsiniz.

Tüm Barındırma hizmetlerimizde becerilerinizi test edin ve % 15 indirim kazanın!

Ödeme sırasında kodu kullanın:

Skills