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 Show
Laravel Sanctum hay Laravel Passport?
Mục lục
điều kiện tiên quyết
Bắt đầuHã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 SanctumChạ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ùngTrướ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
Tạo bộ điều khiển xác thựcHã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ùngMở “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ố 8API người dùng đăng nhậpHã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=root0 Nhận API người dùngTiế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=root1 Ở đâ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=root2 Cập nhật nhà cung cấp dịch vụ tuyến đườngTrướ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=root3 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 APITô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=root4 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ùngNế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ậnTrong 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 |