0 ₫

Chưa có sản phẩm trong giỏ hàng.

0 ₫

Chưa có sản phẩm trong giỏ hàng.

Laravel 8 REST API Authentication với JWT qua ví dụ


Trong suốt hướng dẫn này, chúng ta sẽ tìm hiểu cách xác thực các API REST bằng JWT trong phiên bản Laravel 8 mới nhất. Bạn sẽ biết được cách tạo API REST bằng Laravel 8 xác thực vớiJWT. Chúng ta sẽ xem cách thiết lập xác thực với JWT trong Laravel 8 và triển khai API REST bảo mật bằng cách sử dụng package tymon/jwt-auth.

Bước 1 — Tạo 1 project Laravel 8


Hãy bắt đầu hướng dẫn của mình bằng cách tạo project Laravel 8 bằng composer – công cụ quản lý các dependency dành cho các nhà phát triển PHP.

Hãy chuyển đến giao diện console mới và chạy lệnh sau ở thư mục mà bạn muốn làm việc với dự án PHP mới:

$ composer create-project --prefer-dist laravel/laravel laravel8jwtapp

Bước 2 – Cấu hình cơ sở dữ liệu MySQL

Sau khi tạo project Laravel 8 của bạn bằng Composer, hãy chuyển sang cấu hình cơ sở dữ liệu MySQL cho dự án của bạn.

Mở tệp .env nằm trong thư mục gốc của project Laravel 8 của bạn. Tiếp theo, thêm thông tin cấu hình cơ sở dữ liệu như sau:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE= <database-name>
DB_USERNAME= <database-username>
DB_PASSWORD= <database-password>

Bước 3 – Cài đặt jwt-laravel

Bây giờ chúng ta đã có project Laravel 8 với cơ sở dữ liệu MySQL đã được cấu hình, hãy bắt đầu cài đặt việc xác thực với JWT bằng cách cài đặt package jwt-auth.

Quay lại terminal của bạn và chạy lệnh sau từ thư mục gốc dự án của bạn:

$ composer require tymon/jwt-auth

Bước 4 – Cài đặt JWT Authentication trong Laravel 8

Tại bước này, chúng ta đã có một project Laravel 8 với MySQL được cấu hình. Chúng ta cũng đã cài đặt thư viện jwt-auth ở bước trước. Bây giờ, hãy thiết lập xác thực JWT trong ứng dụng của chúng ta:

Đi đến tệp config/app.php và thêm package JWT và aliases như sau:

'providers' => [
….
'TymonJWTAuthProvidersJWTAuthServiceProvider',
],
'aliases' => [
….
'JWTAuth' => 'TymonJWTAuthFacadesJWTAuth',
'JWTFactory' => 'TymonJWTAuthFacadesJWTFactory',
],

Tiếp theo, quay lại terminal của bạn và chạy lệnh sau:

$ php artisan vendor:publish --provider="TymonJWTAuthProvidersJWTAuthServiceProvider"

Bước 5 – Khởi tạo JWT Secret Key

Sau khi cấu hình xác thực JWT trong ứng dụng. Chúng ta sẽ cần tạo khóa bí mật JWT (JWT secret key) trong bước này.

Đi tới giao diện terminal và chạy lệnh sau để tạo khóa bí mật JWT:

$ php artisan jwt:generate

Tiếp theo, mở nhà file vendor/tymon/src/Commands/JWTGenerateCommand.php và cập nhật nó như sau:

public function handle() {$this->fire();}

Bước 6 – Cài đặt JWT Authentication trong User Model

Ở bước này, chúng ta sẽ cài đặt nó ở trong model user.

Mở file App/User.php và cập nhật nó như sau:

<?php 

namespace App;

use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

}

Bước 7 – Cài đặt REST API Controller cho JWT Authentication

Bây giờ chúng ta hãy triển khai controller để xử lý xác thực JWT trong ứng dụng API REST của chúng ta.

Quay lại terminal và chạy lệnh sau để tạo controller:

$ php artisan make:controller JwtAuthController

Tiếp theo, mở file app/http/controllers/JwtAuthController.php và thêm các phương thức sau:

<?php

namespace AppHttpControllers;

use JWTAuth;
use Validator;
use AppUser;
use IlluminateHttpRequest;
use AppHttpRequestsRegisterAuthRequest;
use TymonJWTAuthExceptionsJWTException;
use SymfonyComponentHttpFoundationResponse;

class JwtAuthController extends Controller
{
    public $token = true;

    public function register(Request $request)
    {

         $validator = Validator::make($request->all(), 
                      [ 
                      'name' => 'required',
                      'email' => 'required|email',
                      'password' => 'required',  
                      'c_password' => 'required|same:password', 
                     ]);  

         if ($validator->fails()) {  

               return response()->json(['error'=>$validator->errors()], 401); 

            }   


        $user = new User();
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = bcrypt($request->password);
        $user->save();

        if ($this->token) {
            return $this->login($request);
        }

        return response()->json([
            'success' => true,
            'data' => $user
        ], Response::HTTP_OK);
    }

    public function login(Request $request)
    {
        $input = $request->only('email', 'password');
        $jwt_token = null;

        if (!$jwt_token = JWTAuth::attempt($input)) {
            return response()->json([
                'success' => false,
                'message' => 'Invalid Email or Password',
            ], Response::HTTP_UNAUTHORIZED);
        }

        return response()->json([
            'success' => true,
            'token' => $jwt_token,
        ]);
    }

    public function logout(Request $request)
    {
        $this->validate($request, [
            'token' => 'required'
        ]);

        try {
            JWTAuth::invalidate($request->token);

            return response()->json([
                'success' => true,
                'message' => 'User logged out successfully'
            ]);
        } catch (JWTException $exception) {
            return response()->json([
                'success' => false,
                'message' => 'Sorry, the user cannot be logged out'
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function getUser(Request $request)
    {
        $this->validate($request, [
            'token' => 'required'
        ]);

        $user = JWTAuth::authenticate($request->token);

        return response()->json(['user' => $user]);
    }
}

Bước 7 – Thêm REST API Routes

Trong bước này, chúng ta sẽ tiến hành tạo routes API REST của mình.

Mở fileroute/api.php và cập nhật nó như sau:

Route::post('login', 'JwtAuthController@login');
Route::post('register', 'JwtAuthController@register');

Route::group(['middleware' => 'auth.jwt'], function () {

    Route::get('logout', 'JwtAuthController@logout');
    Route::get('user-info', 'JwtAuthController@getUser');
});

Bước 9 – Hoàn thành cài đặt

Sau khi cài đặt việc xác thực JWT trong ứng dụng API Laravel 8 REST của chúng ta, hãy khởi chạy project ở môi trường phát triển cục bộ của chúng ta bằng lệnh sau:

$ php artisan serve

Như vậy là ta đã hoàn thành được việc cài đặt REST API Authentication ở trong Laravel 8. Các bạn có thể thế việc này rất đơn giản phải không nào.

Tài liệu tham khảo:

Laravel 8.x

BÀI VIẾT MỚI

Hướng Dẫn Đăng Ký ACCESSTRADE

Hướng Dẫn Đăng Ký ACCESSTRADE – Khởi Đầu Kiếm...

Các Trang Affiliate Tại Việt Nam Uy Tín Hiện Nay

Affiliate Marketing Affiliate Marketing hay còn gọi là tiếp thị...

Ung thư cũng được bảo hiểm!

Bạn có tin được không? Ung thư cũng được...

Cơ hội kiếm tiền online hấp dẫn – Affiliate Marketing!

Cơ hội kiếm tiền online hấp dẫn - Tổng...

Môi Trường Làm Việc tại Nhật Bản

Môi Trường Làm Việc tại Nhật Bản: Đặc Điểm...

Lợi ích khi làm việc tại Nhật Bản

Làm việc tại Nhật Bản mang lại nhiều lợi...

Việc Làm Cho Người Việt Nam Tại Nhật Bản

Việc Làm Cho Người Việt Nam Tại Nhật Bản:...

Thị Trường Lao Động Tại Nhật Bản

Tổng Quan Về Thị Trường Lao Động Tại Nhật...

Việc làm tại Nhật Bản

Việc làm tại Nhật Bản là một chủ đề...

Đăng ký sim UQ Mobile Nhật Bản

Đăng ký SIM giá rẻ của UQ Mobile ở...

Đăng ký sim SoftBank Nhật Bản

Đăng ký SIM SoftBank giá rẻ tại Nhật Bản...

Đăng ký sim Rakuten Nhật Bản

Đăng ký SIM giá rẻ Rakuten ở Nhật Bản...

Đăng ký sim linemo ở nhật bản có dễ không?

Đăng ký SIM giá rẻ LINEMO ở Nhật Bản...

Thủ tục đăng ký sim card tại Nhật Bản: Hướng dẫn chi tiết

Thủ tục đăng ký sim card tại Nhật Bản:...

Các nhà mạng di động tại Nhật Bản:

Các nhà mạng di động tại Nhật Bản: Tổng...

ĐƯỢC QUAN TÂM

Thủ tục xin làm thêm 28 tiếng tại Nhật

ĐỐI TƯỢNG: Đối tượng cần làm đơn xin làm thêm...

Môi Trường Làm Việc tại Nhật Bản

Môi Trường Làm Việc tại Nhật Bản: Đặc Điểm...

Hướng Dẫn Đăng Ký ACCESSTRADE

Hướng Dẫn Đăng Ký ACCESSTRADE – Khởi Đầu Kiếm...

Các Trang Affiliate Tại Việt Nam Uy Tín Hiện Nay

Affiliate Marketing Affiliate Marketing hay còn gọi là tiếp thị...

Ung thư cũng được bảo hiểm!

Bạn có tin được không? Ung thư cũng được...

Cơ hội kiếm tiền online hấp dẫn – Affiliate Marketing!

Cơ hội kiếm tiền online hấp dẫn - Tổng...

Lợi ích khi làm việc tại Nhật Bản

Làm việc tại Nhật Bản mang lại nhiều lợi...

Việc Làm Cho Người Việt Nam Tại Nhật Bản

Việc Làm Cho Người Việt Nam Tại Nhật Bản:...

Thị Trường Lao Động Tại Nhật Bản

Tổng Quan Về Thị Trường Lao Động Tại Nhật...

Việc làm tại Nhật Bản

Việc làm tại Nhật Bản là một chủ đề...