
Cách cài đặt và sử dụng API WordPress REST_Trong các phần trước của loạt bài này, tôi đã đề cập đến việc giới thiệu WordPress REST API và Fetch Post trong WordPress REST API.
Trong phần này của loạt bài về WordPress REST API, tôi sẽ thảo luận về cách cài đặt giao thức xác thực cơ bản trên máy chủ để API REST được cài đặt và duy trì liên lạc an toàn với các thực thể cùng kênh khác nhau.
Tuy nhiên, tôi sẽ bắt đầu hướng dẫn này với một số thảo luận lý thuyết về định nghĩa xác thực.
Xác thực là gì?
Trong bối cảnh Công nghệ Thông tin và Truyền thông (CNTT-TT), xác thực là ý tưởng và quy trình xác minh thông tin đăng nhập của người hoặc tổ chức yêu cầu quyền truy cập vào một hệ thống cụ thể.
Điều quan trọng là bạn cần hiểu xác thực khác với ủy quyền. Khi một người được xác thực trên một máy chủ web WordPress cụ thể, họ được cấp quyền truy cập chung tới hệ thống. Ngược lại, khi một người được ủy quyền, họ có thể truy cập và tận dụng một phần hoặc toàn bộ tài nguyên hệ thống. Nói cách khác, xác thực xác nhận danh tính trong khi ủy quyền xác định và cấp quyền truy cập tài nguyên hệ thống.
Trong ngữ cảnh cụ thể với WordPress REST API, người dùng được xác thực được thực hiện các tác vụ CRUD. Tuy nhiên, người dùng phải chứng minh các đặc quyền xác thực của họ ở mọi bước.
Xác thực với API WordPress REST
API WordPress REST cung cấp một số tùy chọn để xác thực, bao gồm:
- Xác thực cơ bản
- Xác thực OAuth
- Xác thực cookie
Hiện tại, cách xác thực WordPress gốc cho người dùng và các hoạt động của họ là xác minh bằng cookie.
Để tận dụng xác thực OAuth và Xác thực cơ bản với API WordPress REST, bạn cần cài các plugin cụ thể có sẵn trên nhóm API REST của GitHub. Tôi hy vọng rằng hai phương thức này sẽ nhận được hỗ trợ riêng trong các phiên bản tiếp theo API REST từ WordPress.
Xác thực cơ bản
Xác thực cơ bản đề cập đến loại xác thực HTTP cơ bản trong đó thông tin đăng nhập được gửi cùng với các tiêu đề.
- Xác thực cơ bản hoạt động như thế nào?
Trong Xác thực cơ bản, khách hàng yêu cầu một URL yêu cầu xác minh. Đến lượt mình, máy chủ yêu cầu khách hàng tự nhận dạng bằng gửi mã 401 Không được ủy quyền. Để trả lời, khách hàng gửi cùng yêu cầu với thông tin đăng nhập được thêm vào dưới dạng chuỗi được mã hóa base64. Chuỗi này được gửi trong trường tiêu đề ủy quyền như sau:
Authorization:Basic b3dhaXMuYWxhbUBjbG91ZHdheXMuY29tOmVKNWtuU24zNVc=
Do các chuỗi base64 có thể được giải mã mà không cần nhiều nỗ lực, phương thức xác thực này chưa an toàn lắm. Do đó, các phương thức này chỉ nên được sử dụng trong tình huống có sự tin tưởng tuyệt đối giữa máy chủ và máy khách. Một ứng dụng quan trọng khác từ phương pháp này là xử lý sự cố trong một hệ thống an toàn.
- Cài đặt Plugin WordPress REST API
Plugin WordPress REST API cho bạn thêm Xác thực cơ bản vào website WordPress.
Lưu ý: “ Plugin này đòi hỏi phải gửi tên truy cập và pass với tất cả các yêu cầu, và chỉ nên sử dụng trên các kết nối bảo mật SSL hay cho sự phát triển và thử nghiệm tại. Không có SSL, chúng tôi thực sự khuyên bạn nên sử dụng trình xử lý xác thực OAuth 1.0a trên các website đang test.
Plugin WordPress REST API sẵn từ nhóm GitHub WordPress REST API . Để sử dụng plugin, chỉ cần sao chép nó trong thư mục Plugin WordPress và kích hoạt nó thông qua quản trị viên WordPress.
- Gửi yêu cầu xác thực bằng Postman
Để bắt đầu gửi yêu cầu xác thực, hãy cài Tiện ích mở rộng Chrome Postman. Nó làm cho việc phát triển API dễ hơn, nhanh hơn, thông minh hơn và tốt hơn. Đối với người dùng Firefox, cài đặt REST Easy Add-On cung cấp ứng dụng REST đầy đủ tính năng trong trình duyệt.
Giống như hầu hết các ứng dụng HTTP, Postman cho Chrome hỗ trợ gửi yêu cầu bằng phương thức xác thực cơ bản.
Để gửi yêu cầu được xác thực, hãy chuyển đến tab Authorization bên dưới thanh địa chỉ:
Bây giờ chọn Basic Auth từ menu thả xuống. Bạn sẽ được yêu cầu nhập tên người dùng và pass. Tiếp theo, nhấp vào nút Update request.
Sau khi cập nhật tùy chọn xác thực, bạn sẽ thấy một thay đổi trong tab Tiêu đề. Bây giờ, tab sẽ bao gồm một trường tiêu đề cho chuỗi tên người dùng / mật khẩu được mã hóa:
Việc cài đặt xác thực cơ bản với Postman đã hoàn tất. Bây giờ, gửi yêu cầu kiểm tra (thử xóa một bài đăng) yêu cầu xác thực:
Ví dụ: XÓA http://wordpressmu-19393-42425-140587.cloudwaysapps.com/wp-json/wp/v2/posts/50
Trong đó wordpressmu-19393-42425-140587.cloudwaysapps.com có thể được thay thế bằng đường dẫn của máy chủ của bạn.
Nếu mọi việc suôn sẻ, máy chủ sẽ trả về trạng thái 200 OK , cho biết rằng bài đăng có id 50 đã bị xóa:
- Gửi yêu cầu xác thực bằng JavaScript
JavaScript là ngôn ngữ lập trình cấp cao và đó là nguyên nhân tại sao ngày nay, JavaScript dễ tìm thấy ở hầu hết mọi nơi. Do vậy, rất dễ dàng khi thấy các khung JavaScript tương tác với WordPress. Một vấn đề phổ thông là việc tận dụng jQuery tương tác với API WordPress. Trong các trường hợp như vậy, tiêu đề ủy quyền có thể gửi yêu cầu AJAX.
Hãy xem xét yêu cầu XÓA sau đây được gửi qua phương thức jQuery.ajax ():
jQuery.ajax({
url: ‘http://wordpressmu-19393-42425-140587.cloudwaysapps.com/wp-json/wp/v2/posts/50’,
method: ‘DELETE’,
crossDomain: true,
beforeSend: function ( xhr ) {
xhr.setRequestHeader( ‘Authorization’, ‘Basic ‘ + Base64.encode( ‘username:password’ ) );
},
success: function( data, txtStatus, xhr ) {
console.log( data );
console.log( xhr.status );
}
Trong đó Base64 là một đối tượng được sử dụng để mã hóa và giải mã chuỗi base64. Điều này được định nghĩa như sau, ngay phía trên lệnh gọi phương thức jQuery.ajax ():
Trong yêu cầu trên, tôi đã đặt tiêu đề Ủy quyền bằng cách sử dụng setRequestHeader () cho đối tượng xhr được truyền dưới dạng đối số cho phương thức beforeSend () .
Ngoài yêu cầu trên, các tiêu đề Access-Control-Allow-Headers nên cho phép trường Ủy quyền trên máy chủ. Điều này có thể được kích hoạt bằng cách thêm dòng sau vào tệp .htaccess của WordPress:
Header always set Access-Control-Allow-Headers Authorization Header always set
Yêu cầu trên, khi hoàn thành, sẽ lặp lại phản hồi trong bảng điều khiển của trình duyệt
Các 200 mã phản hồi tình trạng trả về bởi các chương trình máy chủ rằng bài với id của 52 đã được xóa thành công.
Xem thêm: Cách tạo một Landing Page
- Gửi yêu cầu xác thực bằng WordPress HTTP API
Nếu bạn kết nối từ xa cùng một website WordPress khác, cách tiếp cận phù hợp nhất là gửi các yêu cầu HTTP thông qua API HTTP từ WordPress.
Hãy xem xét đoạn mã sau gửi yêu cầu XÓA đến một bản cài đặt WordPress khác với API WordPress REST và bật xác thực cơ bản:
Ở đây, tôi đã sử dụng wp_remote_Vquest () chấp nhận hai đối số; $ url (URL của yêu cầu) và $ args (mảng chứa đối số bổ sung được thông qua).
Các $ phương pháp được định nghĩa trong $ args mảng là DELETE. Các $ header mảng chứa tất cả các lĩnh vực tiêu đề để được thông qua với yêu cầu. Tôi đã thông qua khóa ủy quyền với chuỗi tên người dùng và mật khẩu được mã hóa base64.
Phản hồi sẽ được lưu trong biến $ wp_delete_post_response , có thể được sử dụng với các hàm wp_remote_retrieve_response_code () và wp_remote_retrieve_response_message (). Hai hàm này là các hàm trợ giúp trong API HTTP của WordPress và chúng trích xuất mã trạng thái và thông báo trạng thái từ phản hồi tương ứng.
Nếu bài đăng bị xóa thành công thông qua yêu cầu trên, văn bản sau sẽ được lặp lại:
200 OK
Xác thực cookie
Xác thực cookie là phương thức xác thực cơ bản có sẵn trong WordPress. Tại thời điểm đăng nhập được vào bảng điều khiển WordPress, các cookie chính xác được cài đặt. Vì vậy, nhà phát triển chỉ phải đăng nhập để xác thực.
Tuy nhiên, API REST kết hợp phương thức gọi là nonces để xử lý vấn đề CSRF. Điều này đảm bảo rằng tất cả các hoạt động trên web vẫn được tách biệt. Tuy nhiên, điều này cũng đòi hỏi phải xử lý cẩn thận API.
Đây là cách tiếp cận được quy định để tận dụng API cho plugin và chủ đề. Các mô hình dữ liệu tùy chỉnh có thể mở rộng wp.api.models.Base để đảm bảo điều này được gửi chính xác cho bất kỳ yêu cầu tùy chỉnh nào.
Nhiều nhà phát triển thực hiện cuộc gọi AJAX thủ công phải vượt qua nonce với mọi yêu cầu. API tận dụng nonces với hoạt động được đặt thành wp_rest.
Lưu ý: Cho đến gần đây, nhiều phần mềm đã hỗ trợ sơ sài cho các yêu cầu XÓA. Chẳng hạn, PHP không chuyển đổi phần thân yêu cầu của một yêu cầu XÓA thành một siêu lớp. Như vậy, cung cấp nonce như tiêu đề là cách tiếp cận đáng tin cậy nhất trong kịch bản này.
Điều quan trọng cần nhớ là chiến lược xác nhận này phụ thuộc cookie WordPress. Do đó, phương pháp này chỉ phù hợp khi API REST sử dụng trong WordPress và người dùng hiện tại đã đăng nhập. Ngoài ra, người dùng hiện tại phải có ủy quyền phù hợp cho hoạt động đang được thực hiện.
Ví dụ, đây là cách trình khách JavaScript tích hợp tạo ra nonce:
wp_localize_script ( ‘wp-api’ , ‘wpApiSettings’ , mảng ( ‘root’ => esc_url_raw ( rest_url ( ) ) , ‘nonce’ => wp_create_nonce ( ‘wp_rest’ ) ) ) ;
Dưới đây là một ví dụ về chỉnh sửa tiêu đề của bài đăng, sử dụng jQuery AJAX:
Kết luận
WordPress REST API là API REST phổ thông và được tận dụng rộng rãi nhất trên thế giới. Nó có sẵn cho tất cả những người sử dụng WordPress cho những cửa hàng trực tuyến và ứng dụng web.
Tôi hy vọng bạn đã hiểu bất cứ điều gì tôi đã viết trong hướng dẫn này. Nếu bạn vẫn có câu hỏi hoặc muốn đóng góp cho chúng tôi viết, vui lòng để lại nhận xét bên dưới.
Tải Những mẫu giao diện đẹp mắt tại đây: https://taowebsite.com.vn/mau-website/.