Laravel Sanctum menyediakan sistem otentikasi untuk SPA (aplikasi satu halaman), aplikasi mobile, dan API berbasis token yang sederhana. Sanctum memungkinkan setiap pengguna aplikasi untuk menghasilkan beberapa token API untuk akun. Token ini dapat diberikan kemampuan / cakupan yang menentukan tindakan token mana yang diizinkan untuk dilakukan.
Install laravel Scantum
1 |
composer require laravel/sanctum |
kemudian publish konfigurasi scantum
1 |
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" |
lalu jalankan migrasi database
1 |
php artisan migrate |
letakan scantum middleware pada grup api di file app/Http/kernel.php
1 2 3 4 5 |
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful; //dan EnsureFrontendRequestsAreStateful::class, |
sehingga terlihat seperti gambar dibawah ini
Tambahkan HashApiToken pada file app\User.php
1 2 3 4 5 |
use Laravel\Sanctum\HasApiTokens; //dan use HasApiTokens; |
Sehingga terlihat seperti gambar dibawah ini
buat router login pada file routes/api.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Route::post('/login', function(Request $request){ $data = $request->validate([ 'email' => 'required', 'password' => 'required' ]); $user = App\User::where('email', $request->email)->first(); if (! $user || !Hash::check($request->password, $user->password)) { return response([ 'email' => ['The provided credentials are incorrect.'], ], 404); } return $user->createToken('my-token')->plainTextToken; }); |
Kemudian test menggunakan Postman
Apabila email dan password benar maka kita akan mendapatkan token.
Untuk mencoba token tambahkan route middleware berikut ini
1 2 3 |
Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); |
Dan coba token pada Postman