Được thực hiện bằng cách làm theo hướng dẫn: //www.codeofaninja.com/2018/09/rest-api-authentication- example-php-jwt-tutorial.html Đầu tiên tạo người dùng trong cơ sở dữ liệu "API_DB" CREATE TABLE users (
id int NOT NULL AUTO_INCREMENT,
firstname varchar(255) NOT NULL,
lastname varchar(255) NOT NULL,
email varchar(255) NOT NULL,
password varchar(255) NOT NULL,
created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
modified timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
Bắt đầu máy chủ PHP trong root dự án Tạo người dùng //localhost:8080/api/create_user.php
Với dữ liệu cơ thể yêu cầu {
"firstname" : "Toni",
"lastname" : "Ilic",
"email" : "",
"password" : "555"
}
Đăng nhập người dùng //localhost:8080/api/login.php
Api api auth jwt ví dụ
Nhập vào cơ thể
{ "email" : "", "password" : "555" }
Kiểm tra truy cập mã thông báo
//localhost:8080/api/validate_token.php
Nhập vào cơ thể yêu cầu
{ "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MFwvIiwiYXVkIjoiaHR0cDpcL1wvbG9jYWxob3N0OjgwODBcLyIsImlhdCI6MTM1Njk5OTUyNCwibmJmIjoxMzU3MDAwMDAwLCJkYXRhIjp7ImlkIjoiMiIsImZpcnN0bmFtZSI6Ik1pa2UiLCJsYXN0bmFtZSI6IkRhbGlzYXkiLCJlbWFpbCI6Im1pa2VAY29kZW9mYW5pbmphLmNvbSJ9fQ.nyMRPlg0MSI_8xevui3aeW9suDHjBA6PWk05igYT_OY" }
Cập nhật người dùng
//localhost:8080/api/update_user.php
Cơ thể có các chi tiết sau
{ "firstname" : "Toni", "lastname" : "Ilic", "email" : "", "password" : "555", "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MFwvIiwiYXVkIjoiaHR0cDpcL1wvbG9jYWxob3N0OjgwODBcLyIsImlhdCI6MTM1Njk5OTUyNCwibmJmIjoxMzU3MDAwMDAwLCJkYXRhIjp7ImlkIjoiMiIsImZpcnN0bmFtZSI6Ik1pa2UiLCJsYXN0bmFtZSI6IkRhbGlzYXkiLCJlbWFpbCI6Im1pa2VAY29kZW9mYW5pbmphLmNvbSJ9fQ.nyMRPlg0MSI_8xevui3aeW9suDHjBA6PWk05igYT_OY" }
Một API nhỏ và đơn giản API w/ "cơ bản" và "mã thông báo" dựa trên ủy quyền HTTP. Hãy chắc chắn đọc các tài liệu của các phụ thuộc dự án sau đây. Git »rõ ràng PHP-JWT »trên GitHub Một thư viện đơn giản để mã hóa và giải mã mã thông báo JSON Web (JWT) Mysqlidb »trên github đơn giản MySQli trình bao bọc và bản đồ đối tượng với các câu lệnh đã chuẩn bị. Swift Mailer »Trang chủ Một giải pháp gửi thư dựa trên thành phần cho Php 7> =. Có ba loại nhóm khác nhau: Quyền thực hiện các phương thức trên các nhóm và người dùng được cố định theo thứ bậc trong hệ thống. Quyền thực hiện các phương thức từ các dịch vụ tùy chỉnh được chỉ định riêng trên hồ sơ nhóm (hoặc hồ sơ người dùng). "Quản trị viên" có quyền thực hiện bất kỳ phương thức được cung cấp nào của các dịch vụ khác nhau.API REST dịch vụ web PHP
Phụ thuộc
A simple library to encode and decode JSON Web Tokens (JWT)
Simple MySQLi wrapper and object mapper with prepared statements.
A component
based mailing solution for PHP 7 >= .Quản lý nhóm và người dùng
The rights to perform methods from custom services are specified separately on group records (or user records).
"Biên tập viên" có thể chỉnh sửa tài khoản người dùng của riêng họ và có thể chỉnh sửa và tạo các nhóm mới với loại "người dùng" và thêm người dùng như vậy. Họ cũng có thể chỉ định các quyền cho các nhóm "người dùng" và ghi đè quyền nhóm trên hồ sơ người dùng.
"Người dùng" có thể chỉnh sửa tài khoản người dùng của riêng họ và thực hiện các phương thức trên các bộ điều khiển tùy chỉnh theo chỉ định cho nhóm người dùng của họ (hoặc khi ghi đè lên các phương thức đó được gắn vào hồ sơ người dùng của họ).
Kết hợp tên/mật khẩu ban đầu khi thiết lập được sử dụng từ demouser.php
when setup used from demouser.php
Nhóm: Quản trị viên Tên: Quản trị Mật khẩu: AdminPassword99
Name: admin
Password: adminPassword99
Nhóm: Biên tập Tên: Biên tập Mật khẩu: EditorPassword99
Name: editor
Password: editorPassword99
Nhóm: Tên người dùng: Mật khẩu người dùng: userpassword99
Name: user
Password: userPassword99
Thành lập
- Chạy composer install trong thư mục: Ứng dụng
- Chạy máy chủ web Apache cục bộ (php> = 5.5 khuyến nghị.> = 7.x, mysql> = 5, mod_rewrite) trỏ nó là root vào thư mục này: public/api
- Tạo cơ sở dữ liệu và thực hiện SQL: Cơ sở dữ liệu.SQL sau đây
- Bạn cũng có thể chạy một container Docker, đảm bảo chỉnh sửa thông số kỹ thuật Docker cho phù hợp: Docker-compose.yml
- Đối với mục đích demo thực hiện SQL sau: Demodata.sql
- Sao chép tệp PHP sau vào Rooterver của bạn và mở nó trong trình duyệt: demouser.php
- Chỉnh sửa tệp cơ sở dữ liệu cho thông tin xác thực cơ sở dữ liệu: cơ sở dữ liệu.php
- Chỉnh sửa tệp cấu hình cho các cài đặt khác: config.php
- Mở công cụ kiểm tra API của bạn và bắt đầu yêu cầu của bạn - được đề xuất: Người đưa thư
- Đừng quên sử dụng các tiêu đề ủy quyền HTTP "cơ bản"
- hoặc sử dụng "Token Auth
- Các tiêu đề HTTP khác
Chạy đầu tiên
Bắt đầu nhận được yêu cầu nhận được // localhost cho một danh sách các dịch vụ có sẵn. Trong sản xuất luôn luôn sử dụng SSL!
In production always use SSL!
Nồng độ API đề xuất
Chúng tôi khuyên bạn nên sử dụng API trên một tên miền phụ tách khỏi ứng dụng Frontend/Backend của bạn. Giống như //api.localhost cho API và http của bạn: //www.localhost cho ứng dụng của bạn.
Đối với kịch bản đó, hãy đặt miền của ứng dụng frontend/phụ trợ của bạn
- Đặt thư mục gốc API Subdomain thành công khai/API
- Đặt thư mục gốc ứng dụng thành công khai
- và đặt //localhost:8080/api/create_user.php 0 trong tệp config.php của bạn, để các tệp tĩnh có thể (hình ảnh, video, v.v.) sẽ được tham chiếu đến máy chủ đó.
Trong trường hợp bạn chạy cả API và Frontend/Backend trên cùng một miền, hãy đảm bảo
- Đặt thư mục gốc ra công khai
- và đặt //localhost:8080/api/create_user.php 1 trong tệp config.php của bạn.
Sử dụng & mở rộng
Dữ liệu nhóm và người dùng có thể dễ dàng được mở rộng bởi các trường tùy chỉnh. Bạn cũng có thể thêm bộ điều khiển tùy chỉnh của mình để thêm các dịch vụ tiếp theo vào API của bạn. Kiểm tra cách ở đây: sử dụng.mdnote: Mở rộng chưa được cập nhật an toàn :(
You can also add your custom controllers for adding further services to your API.
Check out how here: USAGE.md
Note: Extending is not yet update-safe :(
Đọc tốt
- //www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
- //restful-api-design.readthedocs.io/en/latest/
- //www.restapitutorial.com/
- //github.com/marmelab/awesome-rest