Setelah sebelumnya kita bahas cara menggunakan fitur baru di Laravel 5.2 yaitu autentikasi dengan token, sekarang kita bahas bagaimana cara menggunakannya bersamaan dengan metode autentikasi session.

Pada tulisan sebelumnya, by default kita mengubah konfigurasi “guard” yang default-nya adalah “web” menjadi “api”. Sekarang kita coba menggunakan api guard tanpa mengubah konfigurasi default.

Contoh pada app/Http/routes.php

Route::get('/', function() {

    if (auth()->check()) {
        return auth()->user();
    }

    abort(403, "You're not authorized to access this page.");
});

Route::get('api', function() {

    $auth = auth()->guard('api'); // Switch guard ke "api" driver

    if ($auth->check()) {
        return $auth->user();
    };

    abort(403, "You're not authorized to access this public REST API.");
});

Hmm, gimana kalau kita ubah menjadi middleware? Buat middleware baru dengan nama ApiAccess

./artisan make:middleware ApiAccess

Edit file app/Http/Middleware/ApiAccess.php

public function handle($request, Closure $next)
{
    $auth = auth()->guard('api');

    if ($auth->check()) {
        return $next($request);
    };

    abort(403, "You're not authorized to access this public REST API.");
}

Lalu tambahkan pada app/Http/Kernel.php

'auth.api' => \App\Http\Middleware\ApiAccess::class,

Karena sudah jadi middleware, sekarang kita lebih mudah menggunakannya. Misalnya pada app/Http/routes.php

$options = [
    'prefix' => 'api', 
    'namespace' => 'Api', 
    'middleware' => 'auth.api',
];

Route::group($options, function() {

    Route::get('/', 'UserController@index');

    Route::get('{user_id}', 'UserController@show');

});

Well done. Sekarang kita bisa menggunakan metode login seperti biasanya dan juga menggunakan metode autentikasi stateless dengan menggunakan token sederhana.

Iklan

6 pemikiran pada “Simple Token Authentication API di Laravel 5.2

  1. Kak Mul, mau tanya nih, sys udah buat seperti tutor di atas, dengan sedikit perubahan, sys dapat kendala di:

    ini route sys:

    Route::group(['middleware' => ['auth.silver']], function () {
        Route::get('/', 'Welcome@index');
    });
    

    nah di welcome controller biar gak di define variable $auth / check $auth lagi gimana ya ?

    ini controllernya:

    class Welcome extends Controller
    {
        public function index()
        {
            $auth = auth()->guard('silver');
            return $auth->user();
        }
    }
    

    Makasih…

    1. Hmm… agak bingung memahami pertanyaannya. :/

      Kalau nggak mau set di controller, bisa set di middleware. Contohnya sudah ada di atas. Kita bisa set middleware di `routes.php` atau di Controller. Misalnya di controller

      class Welcome extends Controller
      {
          public function __construct()
          {
              $this->middleware('auth.silver');
          }
      }
      

      Lalu pada middleware, mirip dengan di atas.

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