Trong bài viết này, trong khi phát triển Rest API với Laravel Framework, chúng ta sẽ xác thực với Laravel Passport, gói chính thức của Laravel Show
Khái niệm xác thực có một vị trí rất quan trọng trong quy trình phát triển ứng dụng. Các ngôn ngữ lập trình khác nhau chứa các giải pháp và cách tiếp cận khác nhau. Trong bài viết này, trong khi phát triển Rest API với Laravel Framework, chúng ta sẽ xác thực với Laravel Passport, gói chính thức của Laravel Mục lục Laravel là gìLaravel là một framework PHP được sử dụng để phát triển các ứng dụng web. Laravel bao gồm nhiều tính năng nâng cao và có nhiều tính năng hữu ích của PHP và OOP. Phương châm của Laravel, được sử dụng bởi nhiều đối tượng, là. “Khung PHP của các nghệ sĩ web”. Bạn có thể truy cập tài liệu chính thức từ liên kết này. https. // ấu trùng. com/ Tại sao lại là LaravelNó được nhiều nhà phát triển ưa thích vì nó bắt kịp với sự thay đổi nhanh chóng của Công nghệ phần mềm và cung cấp cho chúng tôi các nguyên tắc phần mềm và giúp chúng tôi tránh khỏi hầu hết các công việc thủ công (Xác thực, Phần mềm trung gian, ORM, MVC) cần thiết để phát triển dự án nhanh chóng Hộ chiếu Laravel là gìĐây là gói Laravel chính thức tạo điều kiện xác thực trong API còn lại và được viết bằng Laravel Tạo một ứng dụng soạn sẵnTrong phần này, chúng ta sẽ từng bước phát triển ứng dụng Rest API trong Laravel và xem xét việc sử dụng Passport Cài đặt LaravelTrước hết chúng ta cài đặt Laravel Framework trên máy tính thông qua Composer. Nếu bạn chưa có Composer trên máy tính, bạn có thể tải xuống từ liên kết này ( https. //getcomposer. tổ chức/) 1 2 3
nhà soạn nhạc tạo-dự án --prefer-dist laravel/laravel blog
Cài đặt hộ chiếuChúng tôi sẽ cài đặt Passport trên máy tính của mình thông qua Composer. Sau đó, chúng tôi sẽ thực hiện thiết lập cơ sở dữ liệu và mã thông báo mặc định bằng hai lệnh cuối cùng 1 2 3 4 5 6
nhà soạn nhạc yêu cầu laravel/hộ chiếu
php nghệ nhân di cư php nghệ nhân hộ chiếu. cài đặt
Định cấu hình hộ chiếuTrong bước này, chúng tôi sẽ thiết lập cài đặt Hộ chiếu. Chúng tôi tạo ba tệp phần mở rộng php khác nhau và dán các mã sau Tập tin. ứng dụng/người dùng. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
//ứng dụng/Người dùng. php
không gian tên Ứng dụng; sử dụng Chiếu sáng\Thông báo\Notifiable; sử dụng Chiếu sáng\Hợp đồng\Auth\MustVerifyEmail; sử dụng Laravel\Hộ chiếu\HasApiTokens; sử dụng Chiếu sáng\Nền tảng\Auth\User as Authenticatable;
lớp Người dùng mở rộng Có thể xác thực implements MustVerifyEmail { sử dụng HasApiTokens, Phải thông báo; /** * Các thuộc tính có thể gán hàng loạt * * Mảng @var */ được bảo vệ $có thể điền = [ 'tên', 'email',< 'password', ];
/** * Các thuộc tính cần ẩn cho mảng * * Mảng @var */ được bảo vệ $ẩn = [ 'mật khẩu', 'remember_token',< ]; }
Tập tin. ứng dụng/Nhà cung cấp/AuthServiceProvider. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
//app/Providers/AuthServiceProvider. php không gian tên Ứng dụng\Nhà cung cấp;
sử dụng Laravel\Hộ chiếu\Passport; sử dụng Chiếu sáng\Hỗ trợ\Facades\Gate; sử dụng Chiếu sáng\Nền tảng\Support\Providers\AuthServiceProvider as ServiceProvider;
lớp AuthServiceProvider mở rộng ServiceProvider { /** * Các ánh xạ chính sách cho ứng dụng * * Mảng @var */ được bảo vệ $chính sách = [ 'App\Model' => 'App\Policies\ModelPolicy', ];
/** * Đăng ký bất kỳ dịch vụ xác thực / ủy quyền nào * * @return vô hiệu */ chức năng công khai khởi động() { $cái này->registerPolicies(); } }
Tập tin. cấu hình/xác thực. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
//config/auth. php trả lại [ //. 'bảo vệ' => [ 'web' => [ 'driver' => 'session',
'nhà cung cấp' => 'users', ], 'api' => [ 'driver' => 'passport', 'nhà cung cấp' => 'users', ], ], //. ]
Thêm bảng sản phẩm và mô hìnhĐầu tiên chúng ta chạy lệnh sau để thực hiện quá trình di chuyển cơ sở dữ liệu 1 2 3
php nghệ nhân làm. di chuyển tạo_sản phẩm_ bảng
Sau khi chạy lệnh này, một tệp có tên “database/migrations” sẽ được tạo trong thư mục dự án. Dán các mã bên dưới vào tệp này 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
sử dụng Chiếu sáng\Hỗ trợ\Facades\Schema; sử dụng Chiếu sáng\Cơ sở dữ liệu\Schema\Blueprint; sử dụng Chiếu sáng\Cơ sở dữ liệu\Migrations\Migration;
lớp CreateProductsTable mở rộng Di chuyển { /** * Chạy di chuyển * * @return vô hiệu */ chức năng công khai lên() { Lược đồ. tạo('sản phẩm', function (Blueprint $table) { $bàn->bigIncrements('id'); $bàn->string('name'); $bàn->text('detail'); $bàn->timestamps(); }); }
/** * Đảo ngược di cư * * @return vô hiệu */ chức năng công khai xuống() { Lược đồ. dropIfExists('products'); } }
Sau khi tạo migration chúng ta chạy lệnh sau 1 2 3
php nghệ nhân di cư
Chúng tôi đã tạo bảng “Sản phẩm” và bây giờ chúng tôi sẽ tạo mô hình sản phẩm của mình. Chúng tôi tạo một tệp có tên là Sản phẩm. php” trong thư mục dự án và dán đoạn mã sau Tập tin. ứng dụng/Sản phẩm. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//ứng dụng/Sản phẩm. php không gian tên Ứng dụng; sử dụng Chiếu sáng\Cơ sở dữ liệu\Eloquent\Model; lớp Sản phẩm mở rộng Mô hình { /** * Các thuộc tính có thể gán hàng loạt * * Mảng @var */ được bảo vệ $có thể điền = [ 'tên', 'chi tiết' ]; }
Tạo các tuyến APITrong bước này, chúng tôi sẽ tạo các tuyến API. Laravel cung cấp một api. tệp php để viết các tuyến dịch vụ web. Vì vậy, hãy thêm một tuyến đường mới vào tệp đó Tập tin. tuyến đường/api. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//tuyến đường/api. php /* . -------------------------------------------------- . Định tuyến API . --------------------------------------------------
. Đây là nơi bạn có thể đăng ký các tuyến API cho ứng dụng của mình. Này . các tuyến được tải bởi RouteServiceProvider trong một nhóm . được chỉ định nhóm phần mềm trung gian "api". Tận hưởng việc xây dựng API của bạn
*/ Tuyến đường. bài đăng('đăng ký', 'API\[email protected]'); Tuyến đường. bài đăng('đăng nhập', 'API\[email protected]'); Tuyến đường. phần mềm trung gian('auth. api')->group( function () { Tuyến đường. tài nguyên('sản phẩm', 'API\ProductController'); });
Tạo tập tin điều khiểnTrong bước này, chúng tôi sẽ tạo ba Bộ điều khiển là BaseController, ProductController và RegisterController, nơi chúng tôi sẽ tạo các API còn lại của mình. Dán các mã bên dưới Tập tin. ứng dụng/Http/Bộ điều khiển/API/Bộ điều khiển cơ sở. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
//app/Http/Controllers/API/BaseController. php không gian tên Ứng dụng\Http\Controllers\API; sử dụng Chiếu sáng\Http\Request; sử dụng Ứng dụng\Http\Controllers\Controller as Controller;
lớp BaseController mở rộng Controller { /** * phương pháp phản hồi thành công * * @return \Illuminate\Http\Response */
chức năng công khai gửi phản hồi($result, $message) { $phản hồi = [ 'success' => true, 'data' => $result, 'thông báo' => $message, ]; trả lại phản hồi()->json($response, 200); }
/** * trả về phản hồi lỗi * * @return \Illuminate\Http\Response */
hàm công khai lỗi gửi($error, $errorMessages = [], $code = 404) { $phản hồi = [ 'success' => false, 'thông báo' => $error, ];
nếu(. trống($Thông báo lỗi)){ $phản hồi['data'] = $errorMessages; } trả lại phản hồi()->json($response, $code); } }
Tập tin. ứng dụng/Http/Bộ điều khiển/API/RegisterController. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
//app/Http/Controllers/API/RegisterController. php không gian tên Ứng dụng\Http\Controllers\API;
sử dụng Chiếu sáng\Http\Request; sử dụng Ứng dụng\Http\Controllers\API\BaseController as BaseController; sử dụng Ứng dụng\Người dùng; sử dụng Chiếu sáng\Hỗ trợ\Facades\Auth; sử dụng Trình xác thực;
lớp RegisterController mở rộng BaseController { /** * Đăng ký api * * @return \Illuminate\Http\Response */ chức năng công khai đăng ký(Request $request) { $trình xác thực = Trình xác thực::thực hiện($yêu cầu->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'c_password' => 'required|same:password', ]);
nếu($người xác thực->fails()){ return $this->sendError('Validation Error.', $trình xác thực->errors()); }
$đầu vào = $request->all(); $đầu vào['mật khẩu'] = bcrypt($input['password']); $người dùng = Người dùng::tạo($đầu vào); $thành công['token'] = $user->createToken('MyApp')->accessToken; $thành công['name'] = $user->name;
trả lại $cái này->sendResponse($success, 'User register successfully.'); }
/** * Đăng nhập api * * @return \Illuminate\Http\Response */ chức năng công khai đăng nhập(Request $request) { nếu(Xác thực. thử(['email' => $request->email, 'password' => $request->password])){ $người dùng = Xác thực::người dùng(); $thành công['token'] = $user->createToken('MyApp')-> accessToken; $thành công['name'] = $user->name;
return $this->sendResponse($success, 'User login successfully.'); } khác{ return $this->sendError('Unauthorised.', ['lỗi'=>'Unauthorised']); } } }
Tập tin. ứng dụng/Http/Bộ điều khiển/API/ProductController. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
//app/Http/Controllers/API/ProductController. php không gian tên Ứng dụng\Http\Controllers\API; sử dụng Chiếu sáng\Http\Request; sử dụng Ứng dụng\Http\Controllers\API\BaseController as BaseController; sử dụng Ứng dụng\Sản phẩm; sử dụng Trình xác thực; sử dụng Ứng dụng\Http\Resources\Product as ProductResource;
lớp ProductController mở rộng BaseController { /** * Hiển thị danh sách tài nguyên * * @return \Illuminate\Http\Response */ chức năng công khai chỉ mục() { $sản phẩm = Sản phẩm::tất cả();
trả lại $cái này->sendResponse(ProductResource::bộ sưu tập($sản phẩm) . ', 'Products retrieved successfully.'); }
/** * Lưu trữ tài nguyên mới được tạo trong bộ lưu trữ * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ chức năng công khai cửa hàng(Request $request) { $đầu vào = $request->all();
$trình xác thực = Trình xác thực::tạo($đầu vào, [ 'name' => 'required', 'detail' => 'required' ]);
nếu($người xác thực->fails()){ return $this->sendError('Validation Error.', $trình xác thực->errors()); }
$sản phẩm = Sản phẩm::tạo($đầu vào);
trả lại $cái này->sendResponse(new ProductResource($product), 'Product created successfully.'); }
/** * Hiển thị tài nguyên được chỉ định * * @param int $id * @return \Illuminate\Http\Response */
chức năng công khai hiển thị($id) { $sản phẩm = Sản phẩm::tìm($id); if (is_null($product)) { return $this->sendError('Product not found.'); }
trả lại $cái này->sendResponse(new ProductResource($product), 'Product retrieved successfully.'); }
/** * Cập nhật tài nguyên được chỉ định trong bộ lưu trữ * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */
chức năng công khai cập nhật(Request $request, Product $product) { $đầu vào = $request->all();
$trình xác thực = Trình xác thực::tạo($đầu vào, [ 'name' => 'required', 'detail' => 'required' ]);
nếu($người xác thực->fails()){ return $this->sendError('Validation Error.', $trình xác thực->errors()); }
$sản phẩm->name = $input['name']; $sản phẩm->detail = $input['detail']; $sản phẩm->save();
trả lại $cái này->sendResponse(new ProductResource($product), 'Product updated successfully.'); }
/** * Xóa tài nguyên đã chỉ định khỏi bộ lưu trữ * * @param int $id * @return \Illuminate\Http\Response */ hàm công khai hủy(Product $product) { $sản phẩm->delete(); trả lại $cái này->sendResponse([], 'Product deleted successfully.'); } }
Tạo tài nguyên API EloquentEloquent API sẽ giúp chúng tôi tạo bố cục phản hồi giống như đối tượng mô hình của bạn. Chúng tôi đã sử dụng nó trong tệp ProductController 1 2 3
php nghệ nhân làm. tài nguyên Sản phẩm
Bây giờ có tệp mới được tạo với một thư mục mới trên đường dẫn sau Tập tin. ứng dụng/Http/Tài nguyên/Sản phẩm. php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
//ứng dụng/Http/Tài nguyên/Sản phẩm. php
không gian tên Ứng dụng\Http\Resources; sử dụng Chiếu sáng\Http\Resources\Json\JsonResource; lớp Sản phẩm mở rộng JsonResource { /** * Chuyển đổi tài nguyên thành một mảng * * @param \Illuminate\Http\Request $request * @return mảng */ hàm công khai toArray($request) { trả lại [ 'id' => $this->id, 'name' => $this->name, 'detail' => $this->detail, 'created_at' => $this->created_at->format('d/m/Y'), 'updated_at' => $this->updated_at->format('d/m/Y'), ]; } }
ứng dụng thử nghiệmĐể kiểm tra ứng dụng của chúng tôi, trước tiên chúng tôi sẽ chạy nó trong môi trường cục bộ bằng lệnh bên dưới. Sau đó, chúng tôi sẽ kiểm tra API Restful của mình thông qua Postman 1 2 3
php nghệ nhân phục vụ
Sau khi chạy ứng dụng, chúng tôi thực hiện các bài kiểm tra của mình với Postman. Bạn có thể xem ảnh chụp màn hình Đăng ký API. động từ. NHẬN, URL. http. //máy chủ cục bộ. 8000/api/đăng ký API đăng nhập. động từ. NHẬN, URL. http. //máy chủ cục bộ. 8000/api/đăng nhập API tạo sản phẩm. động từ. BÀI ĐĂNG, URL. http. //máy chủ cục bộ. 8000/api/sản phẩm API hiển thị sản phẩm. động từ. NHẬN, URL. http. //máy chủ cục bộ. 8000/api/products/{id} Phần kết luậnTrong bài viết này, chúng tôi đã làm cho Rest API của mình an toàn hơn bằng cách sử dụng Passport với Laravel rất nhanh với yếu tố tốc độ, đây là tính năng lớn nhất mà Laravel cung cấp cho các nhà phát triển. Hy vọng thông tin này sẽ hữu ích Làm cách nào để thêm xác thực vào API REST trong Laravel?Tạo API REST trong Laravel với xác thực bằng Passport . Cài đặt Laravel Cài đặt hộ chiếu Định cấu hình hộ chiếu Thêm bảng sản phẩm và mô hình Tạo các tuyến API Tạo tập tin điều khiển Tạo tài nguyên API Eloquent ứng dụng thử nghiệm Tại sao tôi nên sử dụng Laravel Passport?Hộ chiếu Laravel hợp lý hóa bảo mật và cho phép bạn tạo Mã thông báo xác thực để cung cấp xác thực cho người dùng . Nhiều hệ thống kỹ thuật số ngày nay yêu cầu xác thực người dùng để truy cập tài nguyên. Trong bài viết này, chúng ta sẽ làm sáng tỏ Laravel Passport package để xác thực các API của ứng dụng.
Xác thực nào tốt nhất cho Laravel?Theo mặc định, Laravel bao gồm một mô hình App\User Eloquent trong thư mục ứng dụng của bạn. Mô hình này có thể được sử dụng với trình điều khiển xác thực Eloquent mặc định. Nếu ứng dụng của bạn không sử dụng Eloquent, bạn có thể sử dụng trình điều khiển xác thực cơ sở dữ liệu sử dụng trình tạo truy vấn Laravel.
Làm cách nào để xác thực trang đăng nhập web bằng API trong Laravel?Kiểm tra xác thực Laravel thủ công. Tạo người dùng
. Nếu thông tin đăng nhập của chúng tôi là chính xác, chúng tôi cũng sẽ nhận được mã thông báo từ API đăng nhập Laravel của mình theo cách này. Mã thông báo ủy quyền mà chúng tôi nhận được từ yêu cầu này, chúng tôi có thể sử dụng khi muốn truy cập tuyến đường được bảo vệ. send a POST request to /api/login . If our credentials are correct, we will also get a token from our Laravel login API this way. The authorization token we get returned from this request we can use when we want to access a protected route. |