32 C
Hanoi
Thứ Hai, Tháng Bảy 22, 2024

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

NEWSLaravel 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

Cách đăng ký sim giá rẻ LINEMO (LINE) – Mới Nhất

Giới thiệu: Nhà mạng Linemo được đổi tên từ nhà...

Hướng dẫn kiếm tiền từ Google AdSense mới nhất!

Google AdSense là gì? Kiếm tiền online là một từ...

Địa điểm ngắm lá đỏ đẹp nhất ở KANTO- Nhật Bản.

Ai đã từng đặt chân đến Nhật Bản, chắc...

QUẦY TƯ VẤN CHO NGƯỜI NƯỚC NGOÀI TẠI NHẬT BẢN MIỄN PHÍ

Quầy tư vấn cho người nước ngoài tại Nhật...

Tổng hợp sim giá rẻ ở Nhật Bản

Hôm nay mình xin giới thiệu đến các bạn...

Hướng dẫn đăng ký tài khoản Rakuten.

Mục đích đăng ký tài khoản rakuten: Tài khoản rakuten...

Hướng dẫn thủ tục xin miễn giảm thuế cuối năm khi làm việc tại Nhật Bản (Điều chỉnh tiền thuế cuối năm).

Hai khoản thuế này đáng nhẽ ra là từng cá nhân sẽ phải tự kê khai và nộp cho cơ quan thuế, tuy nhiên, đối với các bạn đang đi làm tại các công ty thì thường bộ phận hành chính của công ty sẽ đại diện cho nhân viên của công ty làm các thủ tục thay cho tất cả nhân viên trong đó có bạn.

Dân số Nhật Bản giảm kỷ lục trong 13 năm liên tiếp.

Theo dữ liệu chính thức từ chính phủ Nhật...

7 lễ hội mùa hè Nhật Bản bạn nhất định phải trải nghiệm

   Mùa hè ở Nhật còn được coi là...

Trợ Cấp Nghỉ Phép Chăm Con Sau Sinh ở Nhật Bản

Sau khi sinh con ở Nhật, bạn có thể...

Tiếng Nhật về Mẹ và Trẻ Sơ Sinh

Để các mẹ thuận lợi hơn trong việc sinh...

Tiếng Nhật bệnh hay gặp ở trẻ em

Dưới đây là một số triệu chứng và bệnh...

Tiếng Nhật khi làm thêm ở Combini

Bạn nhận được công việc làm thêm ở Combini,...

Cách ghi tờ khai xuất cảnh tại Nhật

Với những bạn lần đầu về nước từ Nhật,...

Thủ tục xin nhập quốc tịch Nhật

Nhật bản là nước phát triển bậc nhất thế...

ĐƯỢ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...

Cách đăng ký sim giá rẻ LINEMO (LINE) – Mới Nhất

Giới thiệu: Nhà mạng Linemo được đổi tên từ nhà...

Đơn xin làm thêm 28 tiếng – Hướng dẫn chi tiết.

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

Hướng dẫn kiếm tiền từ Google AdSense mới nhất!

Google AdSense là gì? Kiếm tiền online là một từ...

Bùng điện thoại ở Nhật Bản – Góc cảnh báo!!!

Tìm hiểu thêm: Tổng hợp sim giá rẻ ở...

Địa điểm ngắm lá đỏ đẹp nhất ở KANTO- Nhật Bản.

Ai đã từng đặt chân đến Nhật Bản, chắc...

Hướng dẫn thủ tục xin miễn giảm thuế cuối năm khi làm việc tại Nhật Bản (Điều chỉnh tiền thuế cuối năm).

Hai khoản thuế này đáng nhẽ ra là từng cá nhân sẽ phải tự kê khai và nộp cho cơ quan thuế, tuy nhiên, đối với các bạn đang đi làm tại các công ty thì thường bộ phận hành chính của công ty sẽ đại diện cho nhân viên của công ty làm các thủ tục thay cho tất cả nhân viên trong đó có bạn.

Tổng hợp sim giá rẻ ở Nhật Bản

Hôm nay mình xin giới thiệu đến các bạn...

Hướng dẫn đăng ký tài khoản Rakuten.

Mục đích đăng ký tài khoản rakuten: Tài khoản rakuten...

Cách photo copy giấy tờ 2 mặt tại combini

Tại Nhật, các máy photo copy thường có trong...