So, ceritanya saya lihat source code Laravel pada config/auth.php. Maksudnya sih mau melihat informasi tentang multiple auth. Itu lho, yang bisa menggunakan multiple table. Tapi ternyata malah menemukan hal baru :O

Screen Shot 2015-12-18 at 11.03.25
config/auth.php pada Laravel 5.2

Bisa dilihat ada metode autentikasi yang baru, yaitu token.

Karena penasaran, setelah Jumatan, saya langsung cari dimana code yang mengimplementasikan metode autentikasi ini. Dengan menggunakan command line fuzzy search pada terminal, saya langsung menemukan file yang dicari, yaitu Illuminate/Auth/TokenGuard.php.

Setelah baca-baca sedikit, akhirnya saya tau cara menggunakannya 😀 Sepertinya “saat ini” belum dibahas di dokumentasi resmi.

Cara Menggunakan

Pertama edit file users migrations. Tambahkan kolom api_token. Kira-kira menjadi seperti ini

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

        $table->string('api_token')->unique(); // Kita tambahkan ini

        $table->rememberToken();
        $table->timestamps();
    });
}

Lalu lakukan migrasi database dengan ./artisan migrate.

Sekarang kita buat user baru dan api_token-nya. Terserah mau masukin dari artisan tinker, factory model, phpmyadmin, whatever.

Ubah metode autentikasi default pada config/auth.php dari web menjadi api

'defaults' => [
    'guard' => 'api', // Ubah ini
    'passwords' => 'users',
],

Sekarang pada file app/Http/routes.php, tambahkan ini

Route::get('/', function() {
    return auth()->user();
});

Ketika akses url /, tampilan akan kosong. Tapi ketika ditambahkan ?api_token=123 dengan asumsi api_token di database juga 123, maka akan muncul user tersebut.

Screen Shot 2015-12-18 at 13.52.48

PENTING!!!

Demi keamanan, jangan lupa masukkan api_token ke dalam hidden property yang ada di App/User.php, bersama dengan password dan remember_token.

Iklan

17 pemikiran pada “Validasi Token API di Laravel 5.2

    1. Hoo, itu gampang. Kan itu guard yang di config/auth.php adalah konfigurasi default. Tinggal pake aja yang nggak default. Contoh di app/Http/routes.php

      // Ini menggunakan session
      Route::get('/', function() {
          return auth()->user(); // Menggunakan default "guard"
      });
      
      // Ini menggunakan token
      Route::get('api', function() {
      
          $auth = auth()->guard('api'); // Ubah "guard" menjadi "api"
      
          return $auth->user();
      });
      
  1. om mau nanya..
    cara install laravel 5.2 gimana ya ?
    skrg masih pake laravel 5.1 pengen setiap command laravel new “site” otomatis install versi 5.2 gimana ya ? bisa kasih tutorial ga ?

    1. Baru dapat info, sekarang sudah bisa pake
      laravel new --dev

      1. Biasanya bila tidak diletakkan di URL, maka akan diletakkan di header pada saat melakukan HTTP request.

        Bila dilihat source code Illuminate/Auth/TokenGuard.php, disitu terlihat $this->request->bearerToken().

        Jika dilihat di dalam source code Illuminate/Http/Request.php disitu bisa dilihat code-nya membaca header dengan key "Authorization: Bearer ". Ini sama dengan standard yang digunakan dengan OAuth 2.0 https://tools.ietf.org/html/rfc6749

        Jadi cukup masukkan ke HTTP header

        Authorization: Bearer token_saya_disini
        

        Jika menggunakan JQuery misalnya, gunakan headers option.

        $.ajax({
            url: 'foo/bar',
            headers: { 'Authorization': 'Bearer token_saya_disini' }
        });
        
  2. guards => [
    ‘web’ =>[
    ‘driver’ => ‘session’
    ‘provider’ => ‘users’ <— ini maksudnya mengarah kemodel ya mas ? kalo ia liat fungsi yg manggil dmn?
    ]

    Regards

  3. Misi mas mau nanya, kita bisa bikin guard sama provider sendiri gak?
    Lebih tepatnya nambahin gitu, soalnya kl default itu kan masuknya ke tabel user ya, nah saya mau nambahin menuju nya ke tabel lain, gimana ya caranya?
    Thanks

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s