Tam Kullanıcı Kimlik Doğrulaması ve Erişim Kontrolü – Bir Laravel Pasaport Eğitimi, Pt. 1
Yayınlanan: 2022-03-11Bir web uygulaması geliştirirken, onu iki katmana bölmek genellikle iyi bir fikirdir. Orta düzey bir API, veritabanı ile etkileşime girer ve bir web katmanı genellikle bir ön uç SPA veya MPA'dan oluşur. Bu şekilde, bir web uygulaması daha gevşek bir şekilde birleştirilir ve uzun vadede yönetimi ve hata ayıklamayı kolaylaştırır.
API oluşturulduğunda, kimlik doğrulama ve durum bilgisinin durum bilgisi olmayan bir API bağlamında ayarlanması biraz sorunlu görünebilir.
Bu makalede, Laravel ve Passport kullanarak bir API'de tam kullanıcı kimlik doğrulamasının ve basit bir erişim denetimi biçiminin nasıl uygulanacağına bakacağız. Bu bir giriş dersi olmadığı için Laravel ile çalışma deneyiminiz olmalıdır.
Kurulum önkoşulları:
- PHP 7+, MySQL ve Apache (üçünü aynı anda kurmak isteyen geliştiriciler XAMPP kullanabilir.)
- Besteci
- laravel 7
- Laravel Pasaportu. API'ler genellikle durum bilgisiz olduğundan ve oturum kullanmadığından, istekler arasında durumu korumak için genellikle belirteçleri kullanırız. Laravel, API'mizde kimlik doğrulama için kullanabileceğimiz tam bir OAuth2 sunucusunu uygulamak için Passport kitaplığını kullanır.
- API'yi test etmek için Postacı, cURL veya Uykusuzluk - bu kişisel tercihe bağlıdır
- Seçtiğiniz metin editörü
- Laravel yardımcıları (Laravel 6.0 ve üstü için)—Laravel ve Passport'u kurduktan sonra şunu çalıştırın:
composer require laravel/helpers
Yukarıdakiler yüklendiğinde, başlamaya hazırız. .env
dosyasını düzenleyerek veritabanı bağlantınızı kurduğunuzdan emin olun.
Laravel Pasaport Eğitimi, Adım 1: Kukla İstekler için Denetleyici ve Model Ekleme
İlk olarak, kukla istekler için bir denetleyici ve model oluşturacağız. Model bu öğreticide pek kullanılmayacak, sadece denetleyicinin manipüle etmesi gereken veriler hakkında bir fikir vermek için.
Modeli ve denetleyiciyi oluşturmadan önce bir geçiş oluşturmamız gerekiyor. Bir terminalde—veya Windows kullanıyorsanız cmd.exe
penceresinde— aşağıdakileri çalıştırın:
php artisan make:migration create_articles_table --create=articles
Şimdi, database/migrations
klasörüne gidin ve xxxx_xx_xx_xxxxxx_create_articles_table.php
benzeri bir ada sahip dosyayı açın.
Sınıfın up
fonksiyonunda şunu yazacağız:
Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->string('body'); $table->integer('user_id'); $table->timestamps(); });
Ardından, bir Article
modeli oluşturacağız. Bunu yapmak için şunu çalıştırın:
php artisan make:model Article
Ardından, aşağıdakileri çalıştırarak ArticleController
denetleyicisini oluştururuz:
php artisan make:controller ArticleController --resource
Ardından, app/Providers/AppServiceProvider.php
dosyasını düzenleyeceğiz ve aşağıdakileri ekleyerek Illuminate\Support\Facades\Schema
sınıfını içe aktaracağız:
use Illuminate\Support\Facades\Schema
…dosyanın üstündeki içe aktarmaların altına.
Ardından, boot
işlevinde şunu yazacağız:
Schema::defaultStringLength(191);
Tüm bunlar yapıldıktan sonra çalıştırabiliriz:
php artisan migrate
…yukarıda oluşturduğumuz göçü uygulamak için.
Laravel Pasaport Eğitimi, Adım 2: Gerekli Ara Katman Parçalarını Oluşturun
Burada, API'nin çalışması için gerekli olacak ara katman parçalarını ekleyeceğiz.
JSON Yanıtları
İhtiyaç duyulan ilk parça, tüm yanıtları otomatik olarak ForceJsonResponse
dönüştürecek olan ForceJsonResponse ara yazılımıdır.
Bunu yapmak için şunu çalıştırın:
php artisan make:middleware ForceJsonResponse
Ve bu, bu ara yazılımın App/Http/Middleware/ForceJsonReponse.php
içindeki tanıtıcı işlevidir:
public function handle($request, Closure $next) { $request->headers->set('Accept', 'application/json'); return $next($request); }
Ardından, $routeMiddleware
dizisindeki app/Http/Kernel.php
dosyamıza ara yazılımı ekleyeceğiz:
'json.response' => \App\Http\Middleware\ForceJsonResponse::class,
Ardından, aynı dosyadaki $middleware
dizisine de ekleyeceğiz:
\App\Http\Middleware\ForceJsonResponse::class,
Bu, ForceJsonResponse
ara yazılımının her istekte çalıştırılmasını sağlar.
CORS (Çapraz Kaynaklı Kaynak Paylaşımı)
Laravel REST API'mizin tüketicilerinin ona farklı bir kaynaktan erişmesine izin vermek için CORS kurmamız gerekiyor. Bunu yapmak için Cors
adında bir ara katman yazılımı oluşturacağız.
Bir terminalde veya komut isteminde, proje kök dizinine cd
girin ve şunu çalıştırın:
php artisan make:middleware Cors
Ardından, app/Http/Middleware/Cors.php
içinde aşağıdaki kodu ekleyin:
public function handle($request, Closure $next) { return $next($request) ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, X-Token-Auth, Authorization'); }
Bu ara katman yazılımını yüklemek için app/Http/Kernel.php
$routeMiddleware
dizisine bir satır eklememiz gerekecek:
'cors' => \App\Http\Middleware\Cors::class,
Ayrıca, önceki ara katman yazılımı için yaptığımız gibi onu $middleware
dizisine eklememiz gerekecek:
\App\Http\Middleware\Cors::class,
Bunu yaptıktan sonra, bu rota grubunu routes/api.php
:
Route::group(['middleware' => ['cors', 'json.response']], function () { // ... });
Aşağıda göreceğimiz gibi, tüm API rotalarımız bu işleve girecektir.
Laravel Pasaport Eğitimi, Adım 3: API için Kullanıcı Kimlik Doğrulama Denetleyicileri Oluşturun
Şimdi, login
ve register
işlevleriyle kimlik doğrulama denetleyicisini oluşturmak istiyoruz.
İlk önce çalıştıracağız:
php artisan make:controller Auth/ApiAuthController
Şimdi bazı sınıfları app/Http/Controllers/Auth/ApiAuthController.php
dosyasına aktaracağız. Bu sınıflar login
ve register
fonksiyonlarının oluşturulmasında kullanılacaktır. Aşağıdakileri ekleyerek sınıfları içe aktaracağız:
use App\User; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str;
…denetleyicinin en üstüne.
Şimdi, kullanıcılarımız için Laravel API kimlik doğrulaması eklemek için, aynı dosyada login
, logout
ve register
(signup) fonksiyonlarını oluşturacağız.
register
işlevi şöyle görünecektir:
public function register (Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); if ($validator->fails()) { return response(['errors'=>$validator->errors()->all()], 422); } $request['password']=Hash::make($request['password']); $request['remember_token'] = Str::random(10); $user = User::create($request->toArray()); $token = $user->createToken('Laravel Password Grant Client')->accessToken; $response = ['token' => $token]; return response($response, 200); }
login
işlevi şu şekildedir:
public function login (Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required|string|email|max:255', 'password' => 'required|string|min:6|confirmed', ]); if ($validator->fails()) { return response(['errors'=>$validator->errors()->all()], 422); } $user = User::where('email', $request->email)->first(); if ($user) { if (Hash::check($request->password, $user->password)) { $token = $user->createToken('Laravel Password Grant Client')->accessToken; $response = ['token' => $token]; return response($response, 200); } else { $response = ["message" => "Password mismatch"]; return response($response, 422); } } else { $response = ["message" =>'User does not exist']; return response($response, 422); } }
Ve son olarak, logout
işlevi:
public function logout (Request $request) { $token = $request->user()->token(); $token->revoke(); $response = ['message' => 'You have been successfully logged out!']; return response($response, 200); }
Bundan sonra, rotalarımıza, yani zaten API'de bulunan rota grubu içinde login
, register
ve logout
fonksiyonlarını eklememiz gerekiyor:
Route::group(['middleware' => ['cors', 'json.response']], function () { // ... // public routes Route::post('/login', 'Auth\ApiAuthController@login')->name('login.api'); Route::post('/register','Auth\ApiAuthController@register')->name('register.api'); Route::post('/logout', 'Auth\ApiAuthController@logout')->name('logout.api'); // ... });
Son olarak HasApiToken
özelliğini User
modeline eklememiz gerekiyor. app/User
gidin ve şunlara sahip olduğunuzdan emin olun:
use HasApiTokens, Notifiable;
…sınıfın en üstünde.
Şimdiye Kadar Sahip olduklarımız…
Uygulama sunucusunu başlatırsak, yani php artisan serve
çalıştırırsak ve ardından /api/user
yoluna bir GET
isteği göndermeyi denersek, şu mesajı almalıyız:
{ "message": "Unauthenticated." }
Bunun nedeni, bu rotaya erişmek için kimliğimizin doğrulanmamasıdır. Seçtiğiniz bazı rotaları korumalı hale getirmek için, onları Route::post
satırlarından hemen sonra routes/api.php
ekleyebiliriz:
Route::middleware('auth:api')->group(function () { // our routes to be protected will go in here });
Devam etmeden önce, oturum kapatma yolunu auth:api
ara yazılımına ekleyeceğiz çünkü Laravel, kullanıcının oturumunu kapatmak için bir belirteç ( auth:api
ara yazılımının dışından erişilemeyen bir belirteç) kullanır. Genel rotalarımız şöyle görünür:
Route::group(['middleware' => ['cors', 'json.response']], function () { // ... // public routes Route::post('/login', 'Auth\ApiAuthController@login')->name('login.api'); Route::post('/register', 'Auth\ApiAuthController@register')->name('register.api'); // ... });
Korunan rotalarımız ise şöyle görünür:
Route::middleware('auth:api')->group(function () { // our routes to be protected will go in here Route::post('/logout', 'Auth\ApiAuthController@logout')->name('logout.api'); });
Şimdi app/Http/Controllers/ArticleController.php
içinde oluşturduğumuz ArticleController
gideceğiz ve o sınıftaki create
ve edit
metodlarını sileceğiz. Bundan sonra, kalan her bir işleve biraz düzenlenmiş aşağıdaki kod parçasını ekleyeceğiz:
$response = ['message' => '<function name> function']; return response($response, 200);
<function name>
alanını uygun şekilde dolduracağız. Örneğin, update
işlevinin gövdesi şu şekilde olacaktır:
$response = ['message' => 'update function']; return response($response, 200);
Manuel Laravel Kimlik Doğrulama Testi: Bir Kullanıcı Oluşturma
Bir kullanıcıyı kaydetmek için, /api/register
şu parametrelerle bir POST
isteği göndereceğiz: name
, email
(benzersiz olması gerekir), password
ve password_confirmation
.
Kullanıcı oluşturulduğunda, API, kimlik doğrulama yöntemimiz olarak daha sonraki isteklerde kullanacağımız bir belirteç döndürür.
Giriş yapmak için /api/login
adresine bir POST
isteği göndereceğiz. Kimlik bilgilerimiz doğruysa, bu şekilde Laravel oturum açma API'mizden de bir jeton alırız.
Bu istekten döndürülen yetkilendirme jetonu, korumalı bir rotaya erişmek istediğimizde kullanabiliriz. Postacı'da, "Yetkilendirme" sekmesinde, türün "Taşıyıcı Simgesi" olarak ayarlanabileceği bir açılır menü bulunur ve ardından simge, simge alanına gidebilir.
Süreç Insomnia'da oldukça benzer.
cURL kullanıcıları, -H "Authorization: Bearer <token>"
parametresini ileterek eşdeğerini yapabilir; burada <token>
, oturum açma veya kayıt yanıtından verilen yetkilendirme simgesidir.
cURL'de olduğu gibi, geliştiriciler API'yi axios veya bu tür bir kitaplık kullanarak kullanmayı planlıyorlarsa, Bearer <token>
değerine sahip bir Authorization
başlığı ekleyebilirler.
Laravel Pasaport Eğitimi, Adım 4: Parola Sıfırlama İşlevselliği Oluşturun
Artık temel kimlik doğrulaması yapıldığına göre, bir parola sıfırlama işlevi kurmanın zamanı geldi.
Bunu yapmak için bir api_auth
denetleyici dizini oluşturmayı, yeni özel denetleyiciler oluşturmayı ve işlevi gerçekleştirmeyi seçebiliriz; veya Laravel ile oluşturabileceğimiz auth controller'ları düzenleyebiliriz. Bu durumda, tüm uygulama bir API olduğundan, yetkilendirme denetleyicilerini düzenleyeceğiz.

İlk olarak, aşağıdakileri çalıştırarak auth denetleyicilerini oluşturacağız:
composer require laravel/ui php artisan ui vue --auth
Bu iki yöntemi ekleyerek app/Http/Controllers/Auth/ForgotPasswordController.php
içindeki sınıfı düzenleyeceğiz:
protected function sendResetLinkResponse(Request $request, $response) { $response = ['message' => "Password reset email sent"]; return response($response, 200); } protected function sendResetLinkFailedResponse(Request $request, $response) { $response = "Email could not be sent to this email address"; return response($response, 500); }
Ardından, parolayı gerçekten sıfırlayan denetleyiciyi kurmamız gerekiyor, bu nedenle app/Http/Controllers/Auth/ResetPasswordController.php
gidip aşağıdaki gibi varsayılan işlevleri geçersiz kılacağız:
protected function resetPassword($user, $password) { $user->password = Hash::make($password); $user->save(); event(new PasswordReset($user)); } protected function sendResetResponse(Request $request, $response) { $response = ['message' => "Password reset successful"]; return response($response, 200); } protected function sendResetFailedResponse(Request $request, $response) { $response = "Token Invalid"; return response($response, 401); }
Ayrıca aşağıdakileri ekleyerek denetleyicideki bazı sınıfları içe aktarmamız gerekiyor:
use Illuminate\Auth\Events\PasswordReset; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash;
…denetleyicinin en üstüne.
Laravel ile birlikte gelen posta bildirimi yetkilendirme için API belirteçlerini kullanmadığından, hangi e-posta bildiriminin kullanıldığını da değiştirmek isteyeceğiz. Bu komutu çalıştırarak app/Notifications
altında yeni bir tane oluşturabiliriz:
php artisan make:notification MailResetPasswordNotification
Şu şekilde görünmesi için app/Notifications/MailResetPasswordNotification.php
dosyasını düzenlememiz gerekecek:
<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Auth\Notifications\ResetPassword; use Illuminate\Support\Facades\Lang; class MailResetPasswordNotification extends ResetPassword { use Queueable; protected $pageUrl; public $token; /** * Create a new notification instance. * * @param $token */ public function __construct($token) { parent::__construct($token); $this->pageUrl = 'localhost:8080'; // we can set whatever we want here, or use .env to set environmental variables } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['mail']; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { if (static::$toMailCallback) { return call_user_func(static::$toMailCallback, $notifiable, $this->token); } return (new MailMessage) ->subject(Lang::getFromJson('Reset application Password')) ->line(Lang::getFromJson('You are receiving this email because we received a password reset request for your account.')) ->action(Lang::getFromJson('Reset Password'), $this->pageUrl."?token=".$this->token) ->line(Lang::getFromJson('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.users.expire')])) ->line(Lang::getFromJson('If you did not request a password reset, no further action is required.')); } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ public function toArray($notifiable) { return [ // ]; } }
Bu yeni bildirimi kullanmak için, User
Authenticatable
sınıfından miras aldığı sendPasswordResetNotification
yöntemini geçersiz kılmamız gerekiyor. Tek yapmamız gereken bunu app/User.php
eklemek:
public function sendPasswordResetNotification($token) { $this->notify(new \App\Notifications\MailResetPasswordNotification($token)); }
Düzgün çalışan bir mail kurulumu ile bu noktada bildirimler çalışıyor olmalıdır.
Artık geriye kalan tek şey kullanıcı erişim kontrolü.
Laravel Pasaport Eğitimi, Adım 5: Erişim Kontrolü Ara Yazılımı Oluşturun
Erişim kontrolü ara yazılımı oluşturmadan önce, kullanıcı seviyesini belirlemek için kullanılacak olan type
adında bir sütuna sahip olacak şekilde user
tablosunu güncellememiz gerekecek: type 0 normal bir kullanıcı, type 1 bir admin ve type 2 bir süper yönetici.
user
tablosunu güncellemek için şunu çalıştırarak bir taşıma oluşturmalıyız:
php artisan make:migration update_users_table_to_include_type --table=users
database/migrations/[timestamp]_update_users_table.php
formunun yeni oluşturulan dosyasında, type
sütununu eklemek ve kaldırmak için sırasıyla up
ve down
işlevlerini güncellememiz gerekecek:
public function up() { Schema::table('users', function (Blueprint $table) { $table->integer('type'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { $table->dropIfExists('type'); }); }
Ardından, php artisan migrate
çalıştıracağız. Bu yapıldıktan sonra, ApiAuthController.php
dosyasındaki register
fonksiyonumuzu düzenlememiz ve bunu satırın hemen önüne $user = User::create($request->toArray());
ile eklememiz gerekiyor. :
$request['type'] = $request['type'] ? $request['type'] : 0;
Ayrıca, bu satırı $validator
dizisine eklememiz gerekecek:
'type' => 'integer',
Bu iki düzenlemeden ilki, tüm kayıtlı kullanıcıları varsayılan olarak "normal kullanıcılar" yapacaktır, yani herhangi bir kullanıcı türü girilmediyse.
Erişim Kontrolü Ara Yazılımının Kendisi
Şimdi, erişim kontrolü için kullanmak üzere iki parça ara katman yazılımı oluşturabilecek durumdayız: biri yöneticiler için diğeri süper yöneticiler için.
Bu yüzden koşacağız:
php artisan make:middleware AdminAuth php artisan make:middleware SuperAdminAuth
İlk önce app/Http/Middleware/AdminAuth.php
ve Illuminate\Support\Facades\Auth
dosyasını içe aktaracağız, ardından handle
işlevini şu şekilde düzenleyeceğiz:
public function handle($request, Closure $next) { if (Auth::guard('api')->check() && $request->user()->type >= 1) { return $next($request); } else { $message = ["message" => "Permission Denied"]; return response($message, 401); } }
Ayrıca app/Http/Middleware/SuperAdminAuth.php
içindeki handle
işlevini düzenlememiz gerekecek:
public function handle($request, Closure $next) { if (Auth::guard('api')->check() && $request->user()->type >= 2) { return $next($request); } else { $message = ["message" => "Permission Denied"]; return response($message, 401); } }
Ayrıca aşağıdakileri ekleyerek her iki dosyanın en üstündeki Auth
sınıfını içe aktarmalısınız:
use Illuminate\Support\Facades\Auth;
… orada bulunan ithalatın dibine.
Yeni ara katman yazılımımızı kullanmak için, $routeMiddleware
dizisine aşağıdaki satırları ekleyerek, çekirdekteki her iki sınıfa da (yani app/Http/Kernel.php
) başvuracağız:
'api.admin' => \App\Http\Middleware\AdminAuth::class, 'api.superAdmin' => \App\Http\Middleware\SuperAdminAuth::class,
Geliştiriciler belirli bir rotada ara yazılımı kullanmak isterse, tek yapmanız gereken onu rota işlevine şu şekilde eklemektir:
Route::post('route','Controller@method')->middleware('<middleware-name-here>');
Bu durumda <middleware-name-here>
uygun şekilde api.admin
, api.superAdmin
vb. olabilir.
Ara katman yazılımımızı oluşturmak için gereken tek şey bu.
Hepsini bir araya koy
Kimlik doğrulama ve erişim kontrolümüzün çalıştığını test etmek için atılması gereken bazı ek adımlar vardır.
Laravel Kimlik Doğrulaması ve Erişim Kontrolünün Test Edilmesi: Adım 1
ArticleController
index
fonksiyonunu değiştirmemiz ve rotayı kaydetmemiz gerekiyor. (Gerçek dünya projelerinde PHPUnit kullanır ve bunu otomatik bir testin parçası olarak yapardık. Burada, test amacıyla manuel olarak bir rota ekliyoruz - daha sonra kaldırılabilir.)
app/Http/Controllers/ArticleController
adresindeki ArticleController
kontrolörüne gideceğiz ve index
fonksiyonunu şöyle görünecek şekilde değiştireceğiz:
public function index() { $response = ['message' => 'article index']; return response($response, 200); }
Ardından, route routes/api.php
dosyasına gidip şunu ekleyerek bir route'a fonksiyonu kaydedeceğiz:
Route::middleware('auth:api')->group(function () { Route::get('/articles', 'ArticleController@index')->name('articles'); });
Laravel Kimlik Doğrulaması ve Erişim Kontrolünün Test Edilmesi: 2. Adım
Artık bir kimlik doğrulama belirteci olmadan rotaya erişmeyi deneyebiliriz. Bir kimlik doğrulama hatası almalıyız.
Laravel Kimlik Doğrulaması ve Erişim Kontrolünün Test Edilmesi: Adım 3
Aynı rotaya bir yetkilendirme jetonuyla da erişmeyi deneyebiliriz (bu makalenin önceki bölümlerinde kaydolurken veya oturum açarken elde ettiğimiz).
Bazen bu, şuna benzer bir hataya neden olabilir:
Unknown column 'api_token' in 'where clause' (SQL: select * from `users` where `api_token` = ...
Bu olursa, geliştiricilerin bir Passport geçişi çalıştırdıklarından ve config/auth.php
['guards']['api']['driver']
öğesinin passport
olarak ayarlandığından emin olmaları gerekir:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
Bundan sonra, yapılandırma önbelleğinin de güncellenmesi gerekiyor.
Bu düzeltildikten sonra, rotaya erişebiliriz.
Laravel Kimlik Doğrulaması ve Erişim Kontrolünün Test Edilmesi: Adım 4
Erişim kontrolünü test etme zamanı. Makaleler yoluna ->middleware('api.admin')
, böylece şöyle görünür:
Route::get('/articles', 'ArticleController@index')->middleware('api.admin')->name('articles');
api/user
yolu üzerinden görebileceğimiz gibi, yeni oluşturulan bir kullanıcıya otomatik olarak 0 tipi atanacak şekilde yaptık.
Bu nedenle, böyle bir kullanıcı olarak articles
uç noktasına erişmeye çalışırken bir hata almalıyız.
Test amacıyla, veritabanındaki kullanıcıyı type
1 olacak şekilde değiştirelim. Bu değişikliği api/user
yolu ile tekrar doğruladıktan sonra, /articles/
rotasını GET
için tekrar denemeye hazırız.
Mükemmel çalışıyor.
Daha karmaşık uygulamalar yapan geliştiriciler, uygun erişim kontrollerinin bu kadar basit olmayacağını unutmamalıdır. Bu durumda, özel kullanıcı erişim kontrolünü uygulamak için diğer üçüncü taraf uygulamaları veya Laravel'in kapıları ve ilkeleri kullanılabilir. Bu serinin ikinci bölümünde, daha sağlam ve esnek erişim kontrol çözümlerine bakacağız.
Laravel API Kimlik Doğrulaması: Ne Öğrendik?
Bu Laravel Pasaport eğitiminde şunları tartıştık:
- Laravel Pasaport örneğimizi test ederken kullanılacak bir şeye sahip olmak için kukla bir denetleyici ve model oluşturmak.
- API'mizin sorunsuz çalışmasını sağlamak için gerekli ara yazılımı oluşturmak, CORS'u adreslemek ve API'yi her zaman JSON yanıtları döndürmeye zorlamak.
- Temel Laravel API kimlik doğrulamasının ayarlanması: kaydolma, oturum açma ve oturum kapatma.
- Laravel'in varsayılanına dayalı olarak “parola sıfırlama” işlevinin ayarlanması.
- Farklı rotalara kullanıcı yetkilendirme izin düzeyleri eklemek için erişim denetimi ara yazılımı oluşturma.
Bunlar, Laravel geliştirme hizmetleri alanında çalışan herkes için temel becerilerdir. Okuyucular bu GitHub deposunda nihai sonucu bulacaklar ve artık Laravel ile kimlik doğrulamayı uygulamak için iyi bir konumda olmalıdırlar. Aşağıda yorumları bekliyoruz.