Hasapitokens trong Laravel là gì?

Trong bài viết này, chúng ta sẽ thảo luận về “Laravel Sanctum – Restful API Authentication”. Laravel Sanctum cung cấp một hệ thống xác thực đơn giản cho các ứng dụng di động, SPA [Ứng dụng một trang] và API dựa trên mã thông báo. Chúng tôi có thể tạo nhiều mã thông báo API cho tài khoản người dùng. Ngoài ra, chúng tôi có thể chỉ định các khả năng/phạm vi chỉ định hành động nào mà mã thông báo được phép thực hiện. Ví dụ: chúng tôi có thể chỉ định các khả năng theo vai trò của người dùng

Laravel Sanctum hay Laravel Passport?

  • Hộ chiếu cung cấp giải pháp hoàn chỉnh để xác thực OAuth2. Nếu OAuth không bắt buộc trong dự án của bạn thì Sanctum phù hợp với ứng dụng của bạn
  • Sanctum nhẹ và dễ thực hiện

Mục lục

  • điều kiện tiên quyết
  • Bắt đầu
  • Cài đặt/Thiết lập Laravel Sanctum
  • Cập nhật mô hình người dùng
  • Tạo API
    • Tạo bộ điều khiển xác thực
    • Đăng ký API người dùng
    • API người dùng đăng nhập
    • Nhận API người dùng
  • Cập nhật nhà cung cấp dịch vụ tuyến đường
  • Kiểm tra API
    • Tạo người dùng mới
    • Người dùng đăng nhập
    • Nhận người dùng
  • Phần kết luận

điều kiện tiên quyết

  1. Kiến thức về Laravel, bạn có thể kiểm tra bài đăng khác của chúng tôi về Laravel
  2. Kiến thức cơ bản về HTTP client postman. Bạn có thể tự do sử dụng bất kỳ ứng dụng khách HTTP nào, v.v.

Bắt đầu

Hãy thiết lập một ứng dụng Laravel mới, sử dụng lệnh composer sau vào terminal

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

Sau khi cài đặt, cấu hình cơ sở dữ liệu. Mở ". env” nằm ở thư mục gốc của ứng dụng và cập nhật như sau

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root

Cài đặt/Thiết lập Laravel Sanctum

Chạy lệnh sau vào terminal. Thao tác này sẽ cài đặt Laravel Sanctum và các phần phụ thuộc của nó

composer require laravel/sanctum

Tiếp theo, chúng tôi sẽ xuất bản các tệp cấu hình và di chuyển của Laravel Sanctum bằng lệnh sau

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Bây giờ, hãy chạy di chuyển cơ sở dữ liệu

php artisan migrate

Cập nhật mô hình người dùng

Trước khi bắt đầu sử dụng Laravel Sanctum, chúng tôi phải xác minh mô hình của Người dùng. Đảm bảo mô hình Người dùng đang sử dụng đặc điểm “HasApiToken”. Sau đó, nếu được yêu cầu, hãy mở “ứng dụng/Mô hình/Người dùng. php” và thêm các sửa đổi sau

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
}

Tạo API

Ở đây, chúng tôi tạo ba điểm cuối API để chứng minh Laravel Sanctum hoạt động

  • đăng ký điểm cuối cho phép người dùng đăng ký tài khoản
  • điểm cuối đăng nhập cho phép người dùng đăng nhập/xác thực chính họ
  • điểm cuối của tôi trả về chi tiết người dùng theo mã thông báo được cung cấp, chỉ khi mã thông báo hợp lệ

Tạo bộ điều khiển xác thực

Hãy tạo một “AuthController”. Sử dụng lệnh thủ công sau

php artisan make:controller Api\AuthController

Sau khi thực hiện lệnh, tập tin “AuthController. php” sẽ được tạo trong thư mục “app/Http/Controllers/Api”

Đăng ký API người dùng

Mở “AuthController. php” và thêm đoạn mã bên dưới vào để tạo phương thức đăng ký người dùng

use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

public function register[Request $request]
{
    // Validate request data
    $validator = Validator::make[$request->all[], [
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|min:10',
    ]];

    // Return errors if validation error occur.
    if [$validator->fails[]] {
        $errors = $validator->errors[];
        return response[]->json[[
            'error' => $errors
        ], 400];
    }

    // Check if validation pass then create user and auth token. Return the auth token
    if [$validator->passes[]] {
        $user = User::create[[
            'name' => $request->name,
            'email' => $request->email,
            'password' => Hash::make[$request->password]
        ]];
        $token = $user->createToken['auth_token']->plainTextToken;
    
        return response[]->json[[
            'access_token' => $token,
            'token_type' => 'Bearer',
        ]];
    }
}

Đầu tiên, xác thực dữ liệu yêu cầu và xác minh theo các quy tắc đã cho, dữ liệu hợp lệ. Khi người dùng đã được tạo, sau đó chúng tôi tạo mã thông báo truy cập cá nhân mới bằng phương thức "createToken []". Điều này sẽ trả về một phiên bản Laravel\Sacred\NewAccessToken. Chúng tôi đang truy cập giá trị văn bản thuần túy của mã thông báo bằng cách sử dụng thuộc tính “plainTextToken” của phiên bản “NewAccessToken”

Đăng ký tuyến API người dùng

Mở các tuyến/api. php để tạo tuyến chịu trách nhiệm đăng ký người dùng

________số 8

API người dùng đăng nhập

Hãy tạo phương thức đăng nhập trong "AuthController"

use App\Models\User;
use Illuminate\Support\Facades\Auth;

public function login[Request $request]
{
    if [!Auth::attempt[$request->only['email', 'password']]] {
        return response[]->json[[
            'message' => 'Invalid login details'
        ], 401];
    }

    $user = User::where['email', $request['email']]->firstOrFail[];

    $token = $user->createToken['auth_token']->plainTextToken;

    return response[]->json[[
        'access_token' => $token,
        'token_type' => 'Bearer',
    ]];
}

Ở đây, chúng tôi đang kiểm tra xem email và mật khẩu có thực sự khớp với người dùng hiện tại không. Sau đó, tạo mã thông báo truy cập cá nhân mới cho người dùng

Đăng nhập Lộ trình API người dùng

Mở các tuyến/api. php để tạo route chịu trách nhiệm đăng nhập/xác thực người dùng

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
0

Nhận API người dùng

Tiếp theo, thêm đoạn mã sau vào “AuthController. php”

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
1

Ở đây, chúng tôi chỉ cần trả lại người dùng hiện được xác thực

Nhận lộ trình API người dùng

Chỉ người dùng được xác thực mới có thể truy cập điểm cuối “/me”. Ở đây, chúng tôi đang sử dụng bảo vệ xác thực thánh địa. Vì vậy, hãy cập nhật tuyến đường như dưới đây

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
2

Cập nhật nhà cung cấp dịch vụ tuyến đường

Trước khi thử nghiệm API, hãy cập nhật “RouteServiceProvider. php” nằm ở “app/Providers”

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
3

Sau này, các tuyến API của chúng tôi sẽ hoạt động hoàn hảo

Kiểm tra API

Tôi đang sử dụng ứng dụng khách Postman HTTP để kiểm tra các API của chúng tôi. Hãy phục vụ ứng dụng Laravel bằng lệnh sau

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root
4

Tạo người dùng mới

Để tạo người dùng mới, hãy gửi yêu cầu POST tới http. //127. 0. 0. 1. 8000/api/đăng ký với tên, email và mật khẩu. Đảm bảo rằng mật khẩu của bạn dài ít nhất 10 ký tự theo quy tắc xác thực

Nếu chúng tôi nhận được lỗi xác thực

Người dùng đăng nhập

Để đăng nhập, hãy tạo một yêu cầu POST tới http. //127. 0. 0. 1. 8001/api/ đăng nhập bằng email và mật khẩu của bạn

Nếu thông tin đăng nhập không hợp lệ thì thông báo lỗi sẽ được hiển thị

Nhận người dùng

Nếu chúng tôi cố gắng truy cập điểm cuối “/me” bằng mã thông báo hợp lệ, chúng tôi sẽ nhận được một cái gì đó tương tự như hình ảnh bên dưới

Nếu không, chúng ta sẽ lấy chi tiết người dùng như trong hình bên dưới

Phần kết luận

Trong bài viết này, chúng ta đang thảo luận về “Laravel Sanctum – Restful API Authentication”. Laravel Sanctum rất dễ cài đặt và định cấu hình, chúng tôi cũng có thể tạo nhiều mã thông báo, với vai trò cụ thể được trao cho mỗi mã thông báo. Cuối cùng, ví dụ về Laravel Sanctum API đã kết thúc, hy vọng bạn sẽ thích nó. Chúng ta sẽ thảo luận thêm về Laravel, các tính năng của Laravel, v.v. Vui lòng thêm nhận xét nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào

Mã thông báo Thánh là gì?

Sanctum cho phép bạn phát hành mã thông báo API/mã thông báo truy cập cá nhân có thể được sử dụng để xác thực các yêu cầu API cho ứng dụng của bạn . Khi thực hiện các yêu cầu sử dụng mã thông báo API, mã thông báo phải được đưa vào tiêu đề Ủy quyền dưới dạng mã thông báo Bearer.

Laravel API token hoạt động như thế nào?

Theo mặc định, Laravel cung cấp một giải pháp đơn giản để xác thực API thông qua mã thông báo ngẫu nhiên được chỉ định cho từng người dùng trong ứng dụng của bạn . Trong cấu hình/auth của bạn. php, bộ bảo vệ api đã được xác định và sử dụng trình điều khiển mã thông báo.

Nơi lưu trữ mã thông báo thần thánh của Laravel?

2 câu trả lời .
cố gắng đăng nhập vào chương trình phụ trợ và bạn sẽ nhận được mã thông báo để xác thực yêu cầu của mình sau
lưu trữ nó bằng cửa hàng của bạn trong cửa hàng người dùng của bạn
sau đó thực hiện yêu cầu API của bạn bằng cách sử dụng mã thông báo đó
phá hủy mã thông báo sau khi đăng xuất

Làm cách nào để tạo mã thông báo API trong Laravel?

Bạn cần sử dụng api_token để thay thế. Tất cả những gì bạn cần làm là nối api_token vào chuỗi truy vấn trước khi thực hiện yêu cầu và yêu cầu được xác thực. Bây giờ Laravel 5 là gì. 5 cung cấp nó khá thú vị. Bạn có thể dễ dàng thực hiện ý tưởng này bằng thư viện Passport

Chủ Đề