Zend Framework - การรับรองความถูกต้อง

การพิสูจน์ตัวตนเป็นหนึ่งในคุณสมบัติที่สำคัญที่สุดและต้องมีในเว็บแอปพลิเคชันใด ๆ Zend Framework จัดเตรียมองค์ประกอบแยกต่างหากเพื่อจัดการการพิสูจน์ตัวตนซึ่งเรียกว่าเป็นไฟล์zend-authentication.

ติดตั้งส่วนประกอบการรับรองความถูกต้อง

สามารถติดตั้งส่วนประกอบการพิสูจน์ตัวตนได้โดยใช้สิ่งต่อไปนี้ Composer คำสั่ง

composer require zendframework/zend-authentication

แนวคิด

โดยปกตินักพัฒนาจะเขียนฟังก์ชัน php เพื่อรับรองความถูกต้องของรายละเอียดผู้ใช้กับแหล่งข้อมูล เมื่อการรับรองความถูกต้องเสร็จสิ้นรายละเอียดการพิสูจน์ตัวตนจะยังคงอยู่สำหรับการร้องขอในภายหลัง Zend Framework สรุปแนวคิดนี้และมีสองคลาสซึ่งอธิบายไว้ด้านล่าง -

คลาส 1 Zend \ Authentication \ Adapter \ AdaptorInterface

คลาสนี้มีวิธีการเดียว authenticateเพื่อเขียนตรรกะการรับรองความถูกต้อง วิธีการพิสูจน์ตัวตนส่งคืนอินสแตนซ์ของZend\Authentication\Result ชั้นเรียน.

นี้ Resultวัตถุมีสถานะการรับรองความถูกต้อง ข้อมูลประจำตัวหากการพิสูจน์ตัวตนสำเร็จและข้อความแสดงข้อผิดพลาดหากการพิสูจน์ตัวตนล้มเหลว ลายเซ็นของอินเทอร์เฟซการพิสูจน์ตัวตนและคลาสผลลัพธ์มีดังนี้ -

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 จัดเตรียมการใช้งานเริ่มต้นเพื่อพิสูจน์ตัวตนกับฐานข้อมูล, ldap, http basic และสรุปข้อมูลประจำตัว อันAdaptor รับรองความถูกต้อง แต่ไม่คงรายละเอียดสำหรับคำขอในอนาคต

คลาส 2 Zend \ Authentication \ AuthenticationService

AuthenticationService เป็นส่วนประกอบหลักซึ่งใช้อะแด็ปเตอร์ที่กำหนดค่าไว้แล้วเพื่อวัตถุประสงค์ในการพิสูจน์ตัวตน เมื่อการรับรองความถูกต้องเสร็จสิ้นจะยังคงมีรายละเอียดการรับรองความถูกต้องและมีวิธีการhasIdentity() เพื่อตรวจสอบว่ามีข้อมูลประจำตัวหรือไม่ getIdentity() เพื่อรับรายละเอียดการรับรองความถูกต้องและ clearIdentity() เพื่อล้างรายละเอียดการตรวจสอบสิทธิ์

รายการรหัสบางส่วนที่จะใช้ AuthenticationService มีดังต่อไปนี้ -

$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();

สิ่งที่เกี่ยวข้องกับการอนุญาตถูกบรรจุเป็นโมดูลสองโมดูลแยกกันคือ - zend-permissions-acl และ zend-permissions-rbac. zend-permissions-acl ขึ้นอยู่กับรายการ Access control และ zend-permissions-rbac จะขึ้นอยู่กับรายการควบคุมการเข้าถึงตามบทบาท พวกเขาให้นามธรรมระดับสูงของแนวคิด ACL & RBAC และช่วยในการเขียนแอปพลิเคชันระดับองค์กร