Laravel 9 JWT Otentikasi: Panduan Lengkap – Codewithaden

Pengaturan Otentikasi Berbasis Token JWT di Laravel gampang. Proses tradisional berinteraksi dengan situs web masuk dari halaman login. Selanjutnya, Anda melakukan tindakan yang Anda inginkan dan kemudian keluar. Namun, dalam kasus API istirahat , prosesnya sama sekali berbeda. JWT (JSON Web Token) biasanya digunakan untuk mengirim informasi yang dapat dipercaya dan diverifikasi menggunakan tanda tangan digital.

Saat kita bisa menggunakan token web JSON

Katakanlah; Anda memiliki aplikasi seluler yang perlu berkomunikasi dengan server. Sekarang, server perlu mengidentifikasi dengan siapa mereka berbicara. Namun sayangnya, HTTP adalah protokol tanpa kewarganegaraan. Jadi kita perlu membuat mekanisme yang menyelesaikan masalah kita: bagaimana server akan mengidentifikasi bahwa pengguna baru atau lama. Apakah sudah terdaftar dengan aplikasi atau tidak. Apakah itu diizinkan pengguna atau tidak? Dalam skenario itu, kita bisa menggunakan Otentikasi JWT

Otentikasi Laravel JWT

  1. Seorang pengguna mengirimkan permintaan pos pendaftaran ke server, dan server membuat token pengguna dan jwt pada database itu dan mengembalikan a Token JWT sebagai tanggapan.
  2. Jwt disimpan baik dalam mekanisme penyimpanan lokal atau lainnya.
  3. Ketika pengguna membuat permintaan lain, perlu menambahkan token itu di header permintaan.
  4. Server memeriksa token itu, dan berdasarkan apakah token JWT valid atau tidak, itu mengembalikan respons.
  5. Sampai pengguna keluar dari aplikasi dan menghancurkan token itu dari penyimpanan lokal, selalu memeriksanya. Jika token valid, maka dapat mengakses sumber daya tertentu.
  6. Jika token dihancurkan atau dimanipulasi, pengguna mengarahkan kembali ke layar login, dan ia perlu mengisi nama pengguna dan kata sandi.
  7. Jika nama pengguna dan kata sandi valid, maka sebagai tanggapan, ia mengirimkan file Token JWT kembali ke pengguna. Kemudian, sekali lagi prosedur yang sama, pengguna menyimpannya di penyimpanan lokal dan mengirimkan token itu untuk setiap permintaan untuk memverifikasi dengan server bahwa ia memiliki pengguna tepercaya dan dapat mengakses sumber daya tertentu.

Seperti biasa, kami memulai proyek ini dengan menginstal segar Laravel.

Langkah 1: Instal dan Konfigurasikan Laravel

Instal Laravel dengan perintah berikut.

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

Konfigurasikan database.

Sekarang, instal pihak ketiga jwttauth paket dengan mengetik perintah berikut.

composer require tymon/jwt-auth 

Itu akan menginstal paket di penjual folder, dan kami composer.json file akan diperbarui.

Langkah 2: Perbarui config/app.php untuk paket JWT

Pergi ke config >> app.php mengajukan dan menambahkan yang berikut.

'providers' => [
	....
	'Tymon\JWTAuth\Providers\JWTAuthServiceProvider',
],
'aliases' => [
	....
	'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth',
        'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory',
], 

Untuk mempublikasikan file konfigurasi di Laravel, Anda perlu menjalankan baris kode berikut:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" 

Sekarang untuk enkripsi token, saya perlu menghasilkan kunci rahasia dengan menjalankan baris kode berikut:

php artisan jwt:generate 

Jika Anda menemukan kesalahan seperti ini setelah mencapai perintah di atas.

ReflectionException: Metode tymon \ jwttauth \ commands \ jwtgenerateCommand :: handle () tidak ada

Anda perlu melakukan langkah berikut.

Pergi ke JwtgenerateCommand.php file terletak di vendor/tymon/src/perintah dan tempel bagian kode ini. handle fungsi publik () {$ this-> fire (); }

Anda dapat mengetahui lebih lanjut tentang ini masalah

Langkah 3: Daftarkan pengguna ke dalam database.

Migrasi tabel ke dalam database dengan perintah berikut.

php artisan migrate 

Sekarang, buat dua file pengontrol untuk pendaftaran dan otentikasi pengguna.

  1. Apiregistercontroller.php
  2. Apilogincontroller.php

Harap ketik perintah berikut untuk menghasilkannya.

php artisan make:controller APIRegisterController
php artisan make:controller APILoginController 

Juga, daftarkan rute API di dalam Rute >> API.php mengajukan.

Route::post('user/register', 'APIRegisterController@register');
Route::post('user/login', 'APILoginController@login'); 

Pertama, kami kode fungsi register di dalam Apiregistercontroller.php mengajukan.

all(), [
            'email' => 'required|string|email|max:255|unique:users',
            'name' => 'required',
            'password'=> 'required'
        ]);
        if ($validator->fails()) {
            return response()->json($validator->errors());
        }
        User::create([
            'name' => $request->get('name'),
            'email' => $request->get('email'),
            'password' => bcrypt($request->get('password')),
        ]);
        $user = User::first();
        $token = JWTAuth::fromUser($user);
        
        return Response::json(compact('token'));
    }
} 

Apa yang telah saya lakukan adalah pertama -tama memeriksa validasi, dan kemudian jika semua data formulir tampaknya benar, itu akan mendaftarkan pengguna dalam database dan mengembalikan token JWT. Kami menghasilkan token berdasarkan objek pengguna. Anda dapat membuat token dari apa pun yang Anda inginkan. Anda dapat menemukan lebih banyak panduan di sini

Langkah 4: Tes di Postman.

Kami mendaftarkan pengguna melalui tukang pos. Jadi mari kita lakukan itu.

Pertama, kami memeriksa validasinya.

Laravel

Sekarang, isi Nama, email, dan kata sandi dan lihat apakah kita bisa mendapatkan token atau tidak.

Laravel

Astaga !! Kami telah berhasil mendaftarkan pengguna dan mendapatkan kembali token JWT. Sekarang simpan token ini di penyimpanan lokal, dan ketika kita perlu mengakses sumber daya yang dilindungi, berikan token ini sebagai pembawa auth untuk mendapatkan permintaan dan mendapatkan rute itu.

Langkah 5: Masuk pengguna.

Kami telah mendefinisikan Gabung rute di API.PHP mengajukan. Sekarang, pergi ke Apilogincontroller.php file dan kode Gabung fungsi.

// APILoginController.php

all(), [
            'email' => 'required|string|email|max:255',
            'password'=> 'required'
        ]);
        if ($validator->fails()) {
            return response()->json($validator->errors());
        }
        $credentials = $request->only('email', 'password');
        try {
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json(['error' => 'invalid_credentials'], 401);
            }
        } catch (JWTException $e) {
            return response()->json(['error' => 'could_not_create_token'], 500);
        }
        return response()->json(compact('token'));
    }
} 

Jika email dan kata sandi benar, kami dapat menghasilkan token JWT. Kalau tidak, kami mendapatkan kesalahan. Sekarang periksa ini di TUKANG POS Dan lihat apakah kita bisa mendapatkan token.

Laravel

Langkah 6: Sertakan middleware untuk melindungi sumber daya.

Itu jwt-auth kemasan Berikan kami, secara default, dua pertengahan middlew.

  • JWT.Auth
  • JWT.Refresh

Kita perlu mendaftarkan tudung ini ke dalam Aplikasi >> http >> kernel.php mengajukan.

protected $routeMiddleware = [
...
...
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
] 

Tentukan satu rute yang perlu dilindungi melalui Otentikasi token JWT

// api.php

Route::middleware('jwt.auth')->get('users', function(Request $request) {
    return auth()->user();
}); 

Sekarang, masuk ke aplikasi dan dapatkan token. Kami dapat menggunakan token ini dalam permintaan GET seperti berikut ini.

Authorization: Bearer {yourtokenhere} 

Dan, kami mendapatkan kembali pengguna. Jadi kami berfungsi penuh Laravel JWT Authentication Tutorial Contoh sedang kerja. Jadi, saya telah meletakkan kode ini di GitHub. Jadi silakan periksa juga.

Garpu saya

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *