Zend Framework - Xác thực

Xác thực là một trong những tính năng quan trọng nhất và phải có trong bất kỳ ứng dụng web nào. Zend Framework cung cấp một thành phần riêng biệt để xử lý xác thực, được gọi làzend-authentication.

Cài đặt một thành phần xác thực

Thành phần xác thực có thể được cài đặt bằng cách sử dụng sau Composer chỉ huy.

composer require zendframework/zend-authentication

Ý tưởng

Thông thường, một nhà phát triển viết một hàm php để xác thực chi tiết người dùng dựa trên một nguồn dữ liệu. Sau khi xác thực xong, các chi tiết xác thực vẫn tồn tại cho các yêu cầu tiếp theo. Zend Framework khái quát khái niệm này và cung cấp hai lớp, được giải thích bên dưới:

Class 1 Zend \ Authentication \ Adapter \ AdaptorInterface

Lớp này cung cấp một phương thức duy nhất, authenticateđể viết logic xác thực. Phương thức xác thực trả về một phiên bản củaZend\Authentication\Result lớp học.

Điều này Resultđối tượng giữ trạng thái xác thực; nhận dạng nếu xác thực thành công và thông báo lỗi nếu xác thực không thành công. Chữ ký của giao diện xác thực và lớp kết quả như sau:

AdaptorInterface

namespace Zend\Authentication\Adaptor; 
public function authenticate() { 
   // code 
}

Result class

namespace Zend\Authentication; 
class Result { 
   public function __construct($code, $identity, array $messages = []); 
}

Zend Framework cung cấp một triển khai mặc định để xác thực dựa trên cơ sở dữ liệu, ldap, http cơ bản và thông tin đăng nhập. AnAdaptor xác thực nhưng không lưu giữ các chi tiết cho bất kỳ yêu cầu nào trong tương lai.

Lớp 2 Zend \ Authentication \ AuthenticationService

AuthenticationService là thành phần chính, sử dụng bộ điều hợp đã được định cấu hình cho mục đích xác thực. Sau khi xác thực xong, nó sẽ lưu giữ các chi tiết xác thực và cung cấp các phương pháp,hasIdentity() để kiểm tra xem có danh tính hay không, getIdentity() để lấy chi tiết xác thực và clearIdentity() để xóa các chi tiết xác thực.

Danh sách một phần mã để sử dụng AuthenticationService này như sau:

$adap = new Adapter($username, $password);  
$auth = new AuthenticationService(); $result = $auth->authenticate($adap);  
if($result->isValid) { $identity = $auth->getIdentity(); } else { // process $result->getMessages() 
}  
// clear 
$auth->clearIdentity();

Nội dung liên quan đến ủy quyền được đóng gói dưới dạng hai mô-đun riêng biệt, đó là: zend-permissions-aclzend-permissions-rbac. Zend-permissions-acl dựa trên danh sách kiểm soát truy cập và zend-permissions-rbac dựa trên danh sách kiểm soát truy cập dựa trên vai trò. Chúng cung cấp mức độ trừu tượng cao của khái niệm ACL & RBAC và hỗ trợ trong việc viết ứng dụng cấp doanh nghiệp.