Laravel'de Passport kullanımı

Merhabalar,

Bu yazıda Laravel'de Passport kullanımından bahsedeceğim.

İlk olarak komut satırında masaüstü dizinine gelerek aşağıdaki komutu yazıp yeni bir Laravel projesi oluşturuyorum:

composer create-project --prefer-dist laravel/laravel passport

Sonrasında Xampp yardımıyla yerelde bir veritabanı oluşturuyorum. Proje kök dizinindeki .env dosyasını açarak veritabanı bilgilerini aşağıdaki gibi düzenliyorum:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=passport
DB_USERNAME=root
DB_PASSWORD=

defaultStringLength hatasıyla karşılaşmamak için app/Providers/AppServiceProvider.php dosyasını açarak boot() fonksiyonunu düzenliyorum:

public function boot()
{
   Schema::defaultStringLength(191);
}

Artık Passport'u projeye entegre etme kısmına geçebilirim. Öncelikle Passport'u kuruyorum:

composer require laravel/passport

config/app.php dosyasını açarak 'providers' kısmına aşağıdaki satırı ekliyorum:

Laravel\\Passport\\PassportServiceProvider::class

Veritabanı tablolarını oluşturuyorum:

php artisan migrate  

Passport için gerekli şu komutu da yazıyorum:

php artisan passport:install

app/User.php dosyasını açarak ufak bir düzenleme yapıyorum:

use HasApiTokens, Notifiable;

app/Providers/AuthServiceProvider.php dosyasını açarak boot() fonksiyonunda ufak bir düzenleme yapıyorum:

public function boot()
{
  $this->registerPolicies();
  Passport::routes();
}

config/auth.php dosyasını açarak 'guards' kısmında 'api' bölümünde ufak bir düzenleme yapıyorum:

'guards' => [
  'web' => [
    'driver' => 'session',
    'provider' => 'users',
  ],
  'api' => [
    'driver' => 'passport',
    'provider' => 'users',
  ],
]

routes/api.php dosyasını açarak şu şekilde düzenliyorum:

<?php
Route::post('login', '[email protected]');
Route::post('register', '[email protected]');
Route::group(['middleware' => 'auth:api'], function () {
   Route::get('deneme', '[email protected]');
});

UserController adında yeni bir controller oluşturup şu şekilde düzenliyorum:

<?php
namespace App\\Http\\Controllers;
use App\\User;
use Illuminate\\Http\equest;
use Illuminate\\Support\\Facades\\Auth;
use Validator;
class UserController extends Controller
{
   public function login()
   {
       if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
           $user = Auth::user();
           $success['token'] = $user->createToken('MyApp')->accessToken;
           $success['user_id'] = $user->id;
           $success['email'] = $user->email;
           $success['name'] = $user->name;
           return response()->json($success, 200);
       } else {
           return response()->json('Email veya şifre yanlış.', 401);
       }
   }
   public function register(Request $request)
   {
       $validator = Validator::make($request->all(), [
           'name' => 'required',
           'email' => 'required|email|unique:users',
           'password' => 'required',
           'c_password' => 'required|same:password'
       ]);
       if ($validator->fails()) {
           return response()->json($validator->errors(), 400);
       }
       $input = $request->all();
       $input['password'] = bcrypt($input['password']);
       $user = User::create($input);
       if ($user->save()) {
           return response()->json('Kullanıcı başarıyla eklendi.', 200);
       } else {
           return response()->json('Kullanıcı kaydı sırasında bir sorun oluştu.', 400);
       }
   }
   public function deneme()
   {
       return 'deneme';
   }
}

Artık php artisan serve yazarak projeyi çalıştırıp Postman üzerinde test edebilirim.

Register:



Login:



Deneme:

Umarım yararlı olmuştur. İyi çalışmalar.

Yusuf Borucu

Benim adım Yusuf. 1993 yılında Şanlıurfa'da doğdum. 2015 yılında Bilecik Şeyh Edebali Üniversitesi'nde Bilgisayar Mühendisliği bölümünden mezun oldum. Şu anda özel bir şirkette Yazılım Geliştirici olarak çalışmaktayım. Yazılıma yönelik uğraştığım, sevdiğim ve ilgi duyduğum teknolojilerden bahsetmem gerekirse; Laravel, MySQL (mevcut çalıştığım şirkette uğraştıklarım). Asp.Net Mvc, MSSQL (önceden ça...

"Laravel'de Passport kullanımı" için hiç yorum yapılmadı.

Henüz yorum yapılmamış.

Yorum yap * E-posta adresiniz yayınlanmayacak.